internal CreatePipelineResponse CreatePipeline(CreatePipelineRequest request) { var marshaller = new CreatePipelineRequestMarshaller(); var unmarshaller = CreatePipelineResponseUnmarshaller.Instance; return(Invoke <CreatePipelineRequest, CreatePipelineResponse>(request, marshaller, unmarshaller)); }
/// <summary> /// <para>The CreatePipeline operation creates a pipeline with settings that you specify.</para> /// </summary> /// /// <param name="createPipelineRequest">Container for the necessary parameters to execute the CreatePipeline service method on /// AmazonElasticTranscoder.</param> /// /// <returns>The response from the CreatePipeline service method, as returned by AmazonElasticTranscoder.</returns> /// /// <exception cref="T:Amazon.ElasticTranscoder.Model.AccessDeniedException" /> /// <exception cref="T:Amazon.ElasticTranscoder.Model.ResourceNotFoundException" /> /// <exception cref="T:Amazon.ElasticTranscoder.Model.InternalServiceException" /> /// <exception cref="T:Amazon.ElasticTranscoder.Model.LimitExceededException" /> /// <exception cref="T:Amazon.ElasticTranscoder.Model.ValidationException" /> /// <exception cref="T:Amazon.ElasticTranscoder.Model.IncompatibleVersionException" /> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> public Task <CreatePipelineResponse> CreatePipelineAsync(CreatePipelineRequest createPipelineRequest, CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new CreatePipelineRequestMarshaller(); var unmarshaller = CreatePipelineResponseUnmarshaller.GetInstance(); return(Invoke <IRequest, CreatePipelineRequest, CreatePipelineResponse>(createPipelineRequest, marshaller, unmarshaller, signer, cancellationToken)); }
public void CreatePipeline(CreatePipelineRequest request) { var pipeline = request.Pipeline; var generatedName = _storageManager.HashMd5(pipeline.Name); var cloudBlockBlob = _storageManager.CreateNewFile(generatedName + ".json", _containerName).Result; var salt = ""; while (cloudBlockBlob == null) { salt += _storageManager.RandomString(); generatedName = _storageManager.HashMd5(pipeline.Name + salt); cloudBlockBlob = _storageManager.CreateNewFile(generatedName + ".json", _containerName).Result; } cloudBlockBlob.Metadata.Add(new KeyValuePair <string, string>("originalName", pipeline.Name)); if (!IsNullOrEmpty(salt)) { cloudBlockBlob.Metadata.Add(new KeyValuePair <string, string>("salt", salt)); } var newPipeline = new Pipeline { Id = generatedName, Name = pipeline.Name, Tools = pipeline.Tools }; UploadPipelineToStorage(newPipeline, cloudBlockBlob); }
/// <summary> /// Initiates the asynchronous execution of the CreatePipeline operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the CreatePipeline operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> public Task <CreatePipelineResponse> CreatePipelineAsync(CreatePipelineRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var marshaller = new CreatePipelineRequestMarshaller(); var unmarshaller = CreatePipelineResponseUnmarshaller.Instance; return(InvokeAsync <CreatePipelineRequest, CreatePipelineResponse>(request, marshaller, unmarshaller, cancellationToken)); }
/// <summary> /// Initiates the asynchronous execution of the CreatePipeline operation. /// </summary> /// /// <param name="request">Container for the necessary parameters to execute the CreatePipeline operation.</param> /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// <returns>The task object representing the asynchronous operation.</returns> public virtual Task<CreatePipelineResponse> CreatePipelineAsync(CreatePipelineRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken)) { var options = new InvokeOptions(); options.RequestMarshaller = CreatePipelineRequestMarshaller.Instance; options.ResponseUnmarshaller = CreatePipelineResponseUnmarshaller.Instance; return InvokeAsync<CreatePipelineResponse>(request, options, cancellationToken); }
internal virtual CreatePipelineResponse CreatePipeline(CreatePipelineRequest request) { var options = new InvokeOptions(); options.RequestMarshaller = CreatePipelineRequestMarshaller.Instance; options.ResponseUnmarshaller = CreatePipelineResponseUnmarshaller.Instance; return Invoke<CreatePipelineResponse>(request, options); }
public override async Task <CustomResourceResponse> CreateAsync(CustomResourceRequest request, ILambdaContext context) { try { context.LogInfo("Attempting to create a pipeline."); CreatePipelineRequest PipelineRequest = JsonConvert.DeserializeObject <CreatePipelineRequest>(JsonConvert.SerializeObject(request.ResourceProperties)); CreatePipelineResponse CreateResponse = await this._ETClient.CreatePipelineAsync(PipelineRequest); if ((int)CreateResponse.HttpStatusCode < 200 || (int)CreateResponse.HttpStatusCode > 299) { return(new CustomResourceResponse(CustomResourceResponse.RequestStatus.FAILED, $"Received HTTP status code {(int)CreateResponse.HttpStatusCode}.", request)); } else { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.SUCCESS, $"See the details in CloudWatch Log Stream: {context.LogStreamName}.", CreateResponse.Pipeline.Id, request.StackId, request.RequestId, request.LogicalResourceId, false, new Dictionary <string, object>() { { "Name", CreateResponse.Pipeline.Name }, { "Arn", CreateResponse.Pipeline.Arn }, { "Id", CreateResponse.Pipeline.Id } } )); } } catch (AmazonElasticTranscoderException e) { context.LogError(e); return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.FAILED, e.Message, Guid.NewGuid().ToString(), request.StackId, request.RequestId, request.LogicalResourceId )); } catch (Exception e) { context.LogError(e); return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.FAILED, e.Message, Guid.NewGuid().ToString(), request.StackId, request.RequestId, request.LogicalResourceId )); } }
public override IActionResult CreatePipeline(CreatePipelineRequest createPipelineRequest) { _pipelineService.CreatePipeline(createPipelineRequest); var response = new EmptyObject { Success = true }; return(StatusCode(200, response)); }
internal CreatePipelineResponse CreatePipeline(CreatePipelineRequest request) { var task = CreatePipelineAsync(request); try { return(task.Result); } catch (AggregateException e) { ExceptionDispatchInfo.Capture(e.InnerException).Throw(); return(null); } }
public void TestCreatePipeline() { var newPipeline = new NewPipeline() { Name = "New Pipeline", Tools = new List <string>() }; var request = new CreatePipelineRequest { Pipeline = newPipeline }; var pipelineCountBeforeInsert = _mockPipelineService.GetPipelines().Pipelines.Count; _mockPipelineService.CreatePipeline(request); var pipelineCountAfterInsert = _mockPipelineService.GetPipelines().Pipelines.Count; Assert.NotEqual(pipelineCountBeforeInsert, pipelineCountAfterInsert); }
protected override void ProcessRecord() { base.ProcessRecord(); CreatePipelineRequest request; try { request = new CreatePipelineRequest { WorkspaceId = WorkspaceId, CreatePipelineDetails = CreatePipelineDetails, OpcRetryToken = OpcRetryToken, OpcRequestId = OpcRequestId }; response = client.CreatePipeline(request).GetAwaiter().GetResult(); WriteOutput(response, response.Pipeline); FinishProcessing(response); } catch (Exception ex) { TerminatingErrorDuringExecution(ex); } }
public abstract IActionResult CreatePipeline([FromBody] CreatePipelineRequest createPipelineRequest);
public async Task <PipelineDetail> CreateAsync(ProjectId projectId, CreatePipelineRequest request) => await _httpFacade.Post <PipelineDetail>($"projects/{projectId}/pipeline", request);
/// <summary> /// 新建流水线任务 /// </summary> /// <param name="request">请求参数信息</param> /// <returns>请求结果信息</returns> public async Task <CreatePipelineResponse> CreatePipeline(CreatePipelineRequest request) { return(await new CreatePipelineExecutor().Client(this).Execute <CreatePipelineResponse, CreatePipelineResult, CreatePipelineRequest>(request).ConfigureAwait(false)); }
/// <summary> /// 新建流水线任务 /// </summary> /// <param name="request">请求参数信息</param> /// <returns>请求结果信息</returns> public CreatePipelineResponse CreatePipeline(CreatePipelineRequest request) { return(new CreatePipelineExecutor().Client(this).Execute <CreatePipelineResponse, CreatePipelineResult, CreatePipelineRequest>(request)); }
public async Task CreateCustomResourceWithHandlerTest() { // ARRANGE string AccountNumber = "123456789012"; string Region = "us-east-1"; string InputBucket = $"{Environment.UserName}-rawvideo"; string OutputBucket = $"{Environment.UserName}-video"; string PresignedUrlBucket = $"{Environment.UserName}-presigned-url-test"; string ThumbnailBucket = $"{Environment.UserName}-thumbnails"; string IAMRole = $"arn:aws:iam::{AccountNumber}:role/LambdaElasticTranscoderPipeline"; string NotificationTopic = $"arn:aws:sns:{Region}:{AccountNumber}:ElasticTranscoderNotifications"; string Key = "result.txt"; AWSConfigs.AWSProfilesLocation = $"{Environment.GetEnvironmentVariable("UserProfile")}\\.aws\\credentials"; Mock <IAmazonS3> s3Client = new Mock <IAmazonS3>(); s3Client.Setup(x => x.GetPreSignedURL(It.IsAny <GetPreSignedUrlRequest>())).Returns($"https://{PresignedUrlBucket}.s3.amazonaws.com/{Key}?AWSAccessKeyId=AKIA1234567890123456&Expires=1559247929&Signature=OTgL4H7i%2FQOcTFpLM%2AV2LsFjONE%3D"); GetPreSignedUrlRequest preSignedUrlRequest = new GetPreSignedUrlRequest() { BucketName = PresignedUrlBucket, Key = Key, Expires = DateTime.Now.AddMinutes(2), Protocol = Protocol.HTTPS, Verb = HttpVerb.PUT }; string PreSignedUrl = s3Client.Object.GetPreSignedURL(preSignedUrlRequest); string Json = $@" {{ ""requestType"":""create"", ""responseUrl"":""{PreSignedUrl}"", ""stackId"":""arn:aws:cloudformation:{Region}:{AccountNumber}:stack/stack-name/{Guid.NewGuid().ToString()}"", ""requestId"":""12345678"", ""resourceType"":""Custom::TestResource"", ""logicalResourceId"":""MyTestResource"", ""resourceProperties"":{{ ""Role"":""{IAMRole}"", ""Name"":""TestPipeline"", ""InputBucket"":""{InputBucket}"", ""Notifications"":{{ ""Error"": ""{NotificationTopic}"", }}, ""ContentConfig"":{{ ""Bucket"":""{OutputBucket}"" }}, ""ThumbnailConfig"":{{ ""Bucket"":""{ThumbnailBucket}"" }} }} }}"; Json = Json.Trim().Replace("\r", "").Replace("\n", "").Replace("\t", ""); Func <CustomResourceRequest, ILambdaContext, Task <CustomResourceResponse> > Create = async(request, context) => { try { //AmazonElasticTranscoderConfig Config = new AmazonElasticTranscoderConfig(); //IAmazonElasticTranscoder Client = new AmazonElasticTranscoderClient(Config); Mock <IAmazonElasticTranscoder> mockClient = new Mock <IAmazonElasticTranscoder>(); mockClient.Setup(x => x.CreatePipelineAsync(It.IsAny <CreatePipelineRequest>(), default(CancellationToken))) .ReturnsAsync(new CreatePipelineResponse() { HttpStatusCode = HttpStatusCode.OK }); context.LogInfo("Attempting to create a pipeline."); CreatePipelineRequest PipelineRequest = JsonConvert.DeserializeObject <CreatePipelineRequest>(JsonConvert.SerializeObject(request.ResourceProperties)); CreatePipelineResponse CreateResponse = await mockClient.Object.CreatePipelineAsync(PipelineRequest); if ((int)CreateResponse.HttpStatusCode < 200 || (int)CreateResponse.HttpStatusCode > 299) { return(new CustomResourceResponse(CustomResourceResponse.RequestStatus.FAILED, $"Received HTTP status code {(int)CreateResponse.HttpStatusCode}.", request)); } else { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.SUCCESS, $"See the details in CloudWatch Log Stream: {context.LogStreamName}.", CreateResponse.Pipeline.Id, request.StackId, request.RequestId, request.LogicalResourceId, false, new Dictionary <string, object>() { { "Name", CreateResponse.Pipeline.Name }, { "Arn", CreateResponse.Pipeline.Arn }, { "Id", CreateResponse.Pipeline.Id } } )); } } catch (AmazonElasticTranscoderException e) { context.LogError(e); return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.FAILED, e.Message, Guid.NewGuid().ToString(), request.StackId, request.RequestId, request.LogicalResourceId )); } catch (Exception e) { context.LogError(e); return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.FAILED, e.Message, Guid.NewGuid().ToString(), request.StackId, request.RequestId, request.LogicalResourceId )); } }; Func <CustomResourceRequest, ILambdaContext, Task <CustomResourceResponse> > Update = async(request, context) => { try { context.LogInfo("Initiating update for pipeline."); UpdatePipelineRequest PipelineRequest = JsonConvert.DeserializeObject <UpdatePipelineRequest>(JsonConvert.SerializeObject(request.ResourceProperties)); ListPipelinesRequest Listing = new ListPipelinesRequest(); List <Pipeline> Pipelines = new List <Pipeline>(); ListPipelinesResponse Pipes; AmazonElasticTranscoderConfig Config = new AmazonElasticTranscoderConfig(); IAmazonElasticTranscoder Client = new AmazonElasticTranscoderClient(Config); do { Pipes = await Client.ListPipelinesAsync(Listing); Pipelines.AddRange(Pipes.Pipelines.Where(x => x.Name.Equals(request.ResourceProperties["Name"] as string) && x.InputBucket.Equals(request.ResourceProperties["InputBucket"]) && x.Role.Equals(request.ResourceProperties["Role"]) )); } while (Pipes.NextPageToken != null); if (Pipelines.Count > 1) { context.LogWarning($"{Pipelines.Count} pipelines were found matching the Name, InputBucket, and Role specified."); } if (Pipelines.Count > 0) { PipelineRequest.Id = Pipelines.First().Id; UpdatePipelineResponse UpdateResponse = await Client.UpdatePipelineAsync(PipelineRequest); if ((int)UpdateResponse.HttpStatusCode < 200 || (int)UpdateResponse.HttpStatusCode > 299) { return(new CustomResourceResponse(CustomResourceResponse.RequestStatus.FAILED, $"Received HTTP status code {(int)UpdateResponse.HttpStatusCode}.", request)); } else { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.SUCCESS, $"See the details in CloudWatch Log Stream: {context.LogStreamName}.", request, false, new Dictionary <string, object>() { { "Name", UpdateResponse.Pipeline.Name }, { "Arn", UpdateResponse.Pipeline.Arn }, { "Id", UpdateResponse.Pipeline.Id } } )); } } else { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.FAILED, "No pipelines could be found with the matching characteristics.", request )); } } catch (AmazonElasticTranscoderException e) { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.FAILED, e.Message, request )); } catch (Exception e) { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.FAILED, e.Message, request )); } }; Func <CustomResourceRequest, ILambdaContext, Task <CustomResourceResponse> > Delete = async(request, context) => { try { context.LogInfo("Attempting to delete a pipeline."); ListPipelinesRequest Listing = new ListPipelinesRequest(); List <Pipeline> Pipelines = new List <Pipeline>(); ListPipelinesResponse Pipes; AmazonElasticTranscoderConfig Config = new AmazonElasticTranscoderConfig(); IAmazonElasticTranscoder Client = new AmazonElasticTranscoderClient(Config); do { Pipes = await Client.ListPipelinesAsync(Listing); Pipelines.AddRange(Pipes.Pipelines.Where(x => x.Name.Equals(request.ResourceProperties["Name"] as string) && x.InputBucket.Equals(request.ResourceProperties["InputBucket"]) && x.Role.Equals(request.ResourceProperties["Role"]) )); } while (Pipes.NextPageToken != null); if (Pipelines.Count > 1) { context.LogWarning($"{Pipelines.Count} pipelines were found matching the Name, InputBucket, and Role specified."); } if (Pipelines.Count > 0) { DeletePipelineRequest PipelineRequest = new DeletePipelineRequest() { Id = Pipelines.First().Id }; DeletePipelineResponse DeleteResponse = await Client.DeletePipelineAsync(PipelineRequest); if ((int)DeleteResponse.HttpStatusCode < 200 || (int)DeleteResponse.HttpStatusCode > 299) { return(new CustomResourceResponse(CustomResourceResponse.RequestStatus.FAILED, $"Received HTTP status code {(int)DeleteResponse.HttpStatusCode}.", request)); } else { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.SUCCESS, $"See the details in CloudWatch Log Stream: {context.LogStreamName}.", request, false )); } } else { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.SUCCESS, "No pipelines could be found with the matching characteristics.", request )); } } catch (AmazonElasticTranscoderException e) { // If the pipeline doesn't exist, consider it deleted if (e.StatusCode == HttpStatusCode.NotFound) { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.SUCCESS, $"See the details in CloudWatch Log Stream: {context.LogStreamName}.", request )); } else { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.FAILED, e.Message, request )); } } catch (Exception e) { return(new CustomResourceResponse( CustomResourceResponse.RequestStatus.FAILED, e.Message, request )); } }; CustomResourceRequest customResourceRequest = JsonConvert.DeserializeObject <CustomResourceRequest>(Json); Mock <ICustomResourceHelper> mockHelper = new Mock <ICustomResourceHelper>(); mockHelper.Setup(x => x.PutCustomResourceResponseAsync(It.IsAny <CustomResourceRequest>(), It.IsAny <CustomResourceResponse>())) .ReturnsAsync(new CustomResourceResult(customResourceRequest, new CustomResourceResponse(RequestStatus.SUCCESS, "", customResourceRequest), new HttpResponseMessage(HttpStatusCode.OK))); ICustomResourceHandler Handler = new CustomResourceFactory(Create, Update, Delete, mockHelper.Object); TestLambdaLogger TestLogger = new TestLambdaLogger(); TestClientContext ClientContext = new TestClientContext(); TestLambdaContext Context = new TestLambdaContext() { FunctionName = "ElasticTranscoderPipelineCreation", FunctionVersion = "1", Logger = TestLogger, ClientContext = ClientContext, LogGroupName = "aws/lambda/ElasticTranscoderPipeline", LogStreamName = Guid.NewGuid().ToString() }; // ACT CustomResourceResult Response = await Handler.ExecuteAsync(customResourceRequest, Context); // ASSERT Assert.NotNull(Response); Assert.NotNull(Response.Response); Assert.NotNull(Response.S3Response); Assert.True(Response.IsSuccess); }