Beispiel #1
0
        public StackDeploymentStatusRequestFactory CreateRequestFactory(StackDeploymentStatusRequest request)
        {
            var factory = Substitute.For <StackDeploymentStatusRequestFactory>();

            factory.CreateFromSnsEvent(Arg.Any <SNSEvent>()).Returns(request);
            return(factory);
        }
Beispiel #2
0
        private async Task SendSuccess(StackDeploymentStatusRequest request)
        {
            var tokenInfo = await tokenInfoRepository.FindByRequest(request);

            if (request.SourceTopic != config.GithubTopicArn)
            {
                var outputs = await GetStackOutputs(request.StackId, tokenInfo.RoleArn);

                var response = await stepFunctionsClient.SendTaskSuccessAsync(new SendTaskSuccessRequest
                {
                    TaskToken = tokenInfo.ClientRequestToken,
                    Output    = JsonSerializer.Serialize(outputs)
                });

                logger.LogInformation($"Received send task success response: {JsonSerializer.Serialize(response)}");
                await Dequeue(tokenInfo);
            }

            await githubStatusNotifier.NotifySuccess(
                tokenInfo.GithubOwner,
                tokenInfo.GithubRepo,
                tokenInfo.GithubRef,
                request.StackName,
                tokenInfo.EnvironmentName
                );
        }
Beispiel #3
0
        public virtual async Task <TokenInfo> FindByRequest(StackDeploymentStatusRequest request)
        {
            if (request.SourceTopic == config.GithubTopicArn)
            {
                return(new TokenInfo
                {
                    EnvironmentName = "shared",
                    GithubOwner = config.GithubOwner,
                    GithubRepo = request.StackName.Replace($"-{config.StackSuffix}", ""),
                    GithubRef = request.ClientRequestToken,
                });
            }

            var(bucket, key) = GetBucketAndKeyFromRequestToken(request.ClientRequestToken);
            var sourceString = await GetObject(bucket, $"tokens/{key}");

            return(Deserialize <TokenInfo>(sourceString));
        }
Beispiel #4
0
        private async Task SendFailure(StackDeploymentStatusRequest request)
        {
            var tokenInfo = await tokenInfoRepository.FindByRequest(request);

            if (request.SourceTopic != config.GithubTopicArn)
            {
                var response = await stepFunctionsClient.SendTaskFailureAsync(new SendTaskFailureRequest
                {
                    TaskToken = tokenInfo.ClientRequestToken,
                    Cause     = request.ResourceStatus
                });

                logger.LogInformation($"Received send task failure response: {JsonSerializer.Serialize(response)}");
                await Dequeue(tokenInfo);
            }

            await githubStatusNotifier.NotifyFailure(
                tokenInfo.GithubOwner,
                tokenInfo.GithubRepo,
                tokenInfo.GithubRef,
                request.StackName,
                tokenInfo.EnvironmentName
                );
        }