Beispiel #1
0
        public async Task CompleteProjectFeature(ProjectFeatureCompletedEvent @event)
        {
            var client = new HttpClient();

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", @event.CMSAccountId, @event.CMSAccessSecret))));
            client.BaseAddress = new Uri(API_URL);

            var response = await client.GetAsync($"/{API_VERSION}/teams?role=admin");

            var teamResult = await response.MapTo <CMSBitBucketTeamListModel>();

            var defaultTeam = teamResult.Teams.FirstOrDefault(c => c.TeamId.Equals(@event.OrganizationExternalId));

            foreach (var item in @event.Services)
            {
                /*Delete Infrastructure*/
                if (@event.DeleteInfrastructure)
                {
                    CPSAuthModel authModel = new CPSAuthModel();
                    authModel.AccessId        = @event.CPSAccessId;
                    authModel.AccessName      = @event.CPSAccessName;
                    authModel.AccessSecret    = @event.CPSAccessSecret;
                    authModel.AccessRegion    = @event.CPSAccessRegion;
                    authModel.AccessAppId     = @event.CPSAccessAppId;
                    authModel.AccessAppSecret = @event.CPSAccessAppSecret;
                    authModel.AccessDirectory = @event.CPSAccessDirectory;

                    string cloudServiceName = $"{@event.OrganizationName}{@event.ProjectName}{item.ServiceName}development{@event.FeatureName}".ToLower();
                    await _cpsService(@event.CPSType).DeleteService(cloudServiceName, authModel);
                }

                var pullRequestModel = new
                {
                    title = $"feature {@event.FeatureName}",
                    //Description = $"The feature {@event.FeatureName} requests merge operation",
                    source = new {
                        branch = new {
                            name = @event.FeatureName.ToLower()
                        }
                    },
                    destination = new {
                        branch = new
                        {
                            name = "master"
                        }
                    }
                };

                response = await client.PostAsync($"/{API_VERSION}/repositories/{defaultTeam.UserName}/{item.ServiceExternalId}/pullrequests", new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(pullRequestModel), Encoding.UTF8, "application/json"));

                response.EnsureSuccessStatusCode();
            }
        }
Beispiel #2
0
        public async Task DeleteService(string name, CPSAuthModel auth)
        {
            try
            {
                AmazonCloudFormationClient cloudFormationClient = new AmazonCloudFormationClient(auth.AccessId, auth.AccessSecret, Amazon.RegionEndpoint.GetBySystemName(auth.AccessRegion));
                var responseCloudFormationClient = await cloudFormationClient.DeleteStackAsync(new DeleteStackRequest()
                {
                    StackName = name.ToLower()
                });

                string bucketName = name.ToLower();

                AmazonS3Client      s3Client = new AmazonS3Client(auth.AccessId, auth.AccessSecret, Amazon.RegionEndpoint.GetBySystemName(auth.AccessRegion));
                ListObjectsResponse response = await s3Client.ListObjectsAsync(new ListObjectsRequest()
                {
                    BucketName = bucketName
                });

                if (response.S3Objects.Count > 0)
                {
                    List <KeyVersion> keys = response.S3Objects.Select(obj => new KeyVersion()
                    {
                        Key = obj.Key
                    }).ToList();
                    DeleteObjectsRequest deleteObjectsRequest = new DeleteObjectsRequest
                    {
                        BucketName = bucketName,
                        Objects    = keys
                    };
                    await s3Client.DeleteObjectsAsync(deleteObjectsRequest);
                }

                //Delete Bucket
                DeleteBucketRequest request = new DeleteBucketRequest
                {
                    BucketName = bucketName
                };

                await s3Client.DeleteBucketAsync(request);
            }
            catch (Exception ex)
            {
                TelemetryClientManager.Instance.TrackException(ex);

                Console.WriteLine(ex.ToString());
            }
        }
        public async Task DeleteService(string name, CPSAuthModel auth)
        {
            try
            {
                var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(auth.AccessDirectory, auth.AccessAppId, auth.AccessAppSecret);

                ResourceManagementClient resourceManagementClient = new ResourceManagementClient(serviceCreds);
                resourceManagementClient.SubscriptionId = auth.AccessId;

                await resourceManagementClient.ResourceGroups.BeginDeleteAsync(name.ToLower());
            }
            catch (Exception ex)
            {
                TelemetryClientManager.Instance.TrackException(ex);

                Console.WriteLine(ex.ToString());
            }
        }
Beispiel #4
0
        public async Task CompleteProjectFeature(ProjectFeatureCompletedEvent @event)
        {
            string accountUrl = $"https://{@event.CMSAccountName}.visualstudio.com";

            foreach (var item in @event.Services)
            {
                /*Delete Infrastructure*/
                if (@event.DeleteInfrastructure)
                {
                    CPSAuthModel authModel = new CPSAuthModel();
                    authModel.AccessId        = @event.CPSAccessId;
                    authModel.AccessName      = @event.CPSAccessName;
                    authModel.AccessSecret    = @event.CPSAccessSecret;
                    authModel.AccessRegion    = @event.CPSAccessRegion;
                    authModel.AccessAppId     = @event.CPSAccessAppId;
                    authModel.AccessAppSecret = @event.CPSAccessAppSecret;
                    authModel.AccessDirectory = @event.CPSAccessDirectory;

                    string cloudServiceName = $"{@event.OrganizationName}{@event.ProjectName}{item.ServiceName}development{@event.FeatureName}".ToLower();
                    await _cpsService(@event.CPSType).DeleteService(cloudServiceName, authModel);
                }

                HttpClientWrapperAuthorizationModel authCredentials = new HttpClientWrapperAuthorizationModel();
                authCredentials.Schema = "Basic";
                authCredentials.Value  = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", @event.CMSAccessSecret)));

                CMSVSTSPullRequestCreateModel pullRequestModel = new CMSVSTSPullRequestCreateModel();
                pullRequestModel.SourceRefName = $"refs/heads/{@event.FeatureName.ToLower()}";
                pullRequestModel.TargetRefName = "refs/heads/master";
                pullRequestModel.Title         = $"feature {@event.FeatureName}";
                pullRequestModel.Description   = $"The feature {@event.FeatureName} requests merge operation";

                string pullRequestUrl      = $"{accountUrl}/{@event.ProjectExternalId}/_apis/git/repositories/{item.ServiceExternalId}/pullrequests?api-version={_vstsOptions.Value.ApiVersion}";
                var    pullRequestResponse = await _httpClientWrapperService.PostAsync(pullRequestUrl, pullRequestModel, authCredentials);

                pullRequestResponse.EnsureSuccessStatusCode();
            }
        }
Beispiel #5
0
        public async Task CompleteProjectFeature(ProjectFeatureCompletedEvent @event)
        {
            foreach (var item in @event.Services)
            {
                /*Delete Infrastructure*/
                if (@event.DeleteInfrastructure)
                {
                    CPSAuthModel authModel = new CPSAuthModel();
                    authModel.AccessId        = @event.CPSAccessId;
                    authModel.AccessName      = @event.CPSAccessName;
                    authModel.AccessSecret    = @event.CPSAccessSecret;
                    authModel.AccessRegion    = @event.CPSAccessRegion;
                    authModel.AccessAppId     = @event.CPSAccessAppId;
                    authModel.AccessAppSecret = @event.CPSAccessAppSecret;
                    authModel.AccessDirectory = @event.CPSAccessDirectory;

                    string cloudServiceName = $"{@event.OrganizationName}{@event.ProjectName}{item.ServiceName}development{@event.FeatureName}".ToLower();
                    await _cpsService(@event.CPSType).DeleteService(cloudServiceName, authModel);
                }

                CMSGitHubPullRequestCreateModel pullRequestModel = new CMSGitHubPullRequestCreateModel();
                pullRequestModel.SourceRefName = $"{@event.FeatureName.ToLower()}";
                pullRequestModel.TargetRefName = "master";
                pullRequestModel.Title         = $"feature {@event.FeatureName}";
                pullRequestModel.Description   = $"The feature {@event.FeatureName} requests merge operation";

                HttpClientWrapperAuthorizationModel authCredentials = new HttpClientWrapperAuthorizationModel();
                authCredentials.Schema = "Bearer";
                authCredentials.Value  = @event.CMSAccessToken;

                string pullRequestUrl      = $"https://api.github.com/repos/{@event.CMSAccountName}/{item.ServiceName}/pulls";
                var    pullRequestResponse = await _httpClientWrapperService.PostAsync(pullRequestUrl, pullRequestModel, authCredentials, headers : Headers);

                pullRequestResponse.EnsureSuccessStatusCode();
            }
        }
        public async Task Handle(ProjectServiceDeletedEvent @event)
        {
            CPSAuthModel authModel = new CPSAuthModel();

            authModel.AccessId        = @event.CPSAccessId;
            authModel.AccessName      = @event.CPSAccessName;
            authModel.AccessSecret    = @event.CPSAccessSecret;
            authModel.AccessRegion    = @event.CPSAccessRegion;
            authModel.AccessAppId     = @event.CPSAccessAppId;
            authModel.AccessAppSecret = @event.CPSAccessAppSecret;
            authModel.AccessDirectory = @event.CPSAccessDirectory;

            if (@event.CPSType != CloudProviderService.None)
            {
                foreach (var environmentName in @event.Environments)
                {
                    /*cloud service (stack or resourcegroup)*/
                    string cloudServiceName = $"{@event.OrganizationName}{@event.ProjectName}{@event.ServiceName}{environmentName}root".ToLower();
                    await _cpsService(@event.CPSType).DeleteService(cloudServiceName, authModel);
                }
            }


            if (@event.SourceEvent == Domain.Models.Enums.SourceEvent.Service)
            {
                if (@event.ReleaseStartedServiceHookId.HasValue)
                {
                    DeleteServiceHookOptions deleteServiceHookReleaseStartedOptions = new DeleteServiceHookOptions();
                    deleteServiceHookReleaseStartedOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
                    deleteServiceHookReleaseStartedOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
                    deleteServiceHookReleaseStartedOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
                    deleteServiceHookReleaseStartedOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
                    deleteServiceHookReleaseStartedOptions.EventType            = "release";
                    deleteServiceHookReleaseStartedOptions.ServiceHookId        = @event.ReleaseStartedServiceHookId.Value;

                    await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookReleaseStartedOptions);
                }

                if (@event.ReleasePendingApprovalServiceHookId.HasValue)
                {
                    DeleteServiceHookOptions deleteServiceHookReleasePendingApprovalOptions = new DeleteServiceHookOptions();
                    deleteServiceHookReleasePendingApprovalOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
                    deleteServiceHookReleasePendingApprovalOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
                    deleteServiceHookReleasePendingApprovalOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
                    deleteServiceHookReleasePendingApprovalOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
                    deleteServiceHookReleasePendingApprovalOptions.EventType            = "release";
                    deleteServiceHookReleasePendingApprovalOptions.ServiceHookId        = @event.ReleasePendingApprovalServiceHookId.Value;

                    await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookReleasePendingApprovalOptions);
                }

                if (@event.ReleaseCompletedApprovalServiceHookId.HasValue)
                {
                    DeleteServiceHookOptions deleteServiceHookReleaseCompletedApprovalOptions = new DeleteServiceHookOptions();
                    deleteServiceHookReleaseCompletedApprovalOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
                    deleteServiceHookReleaseCompletedApprovalOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
                    deleteServiceHookReleaseCompletedApprovalOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
                    deleteServiceHookReleaseCompletedApprovalOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
                    deleteServiceHookReleaseCompletedApprovalOptions.EventType            = "release";
                    deleteServiceHookReleaseCompletedApprovalOptions.ServiceHookId        = @event.ReleaseCompletedApprovalServiceHookId.Value;

                    await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookReleaseCompletedApprovalOptions);
                }

                if (@event.ReleaseServiceHookId.HasValue)
                {
                    DeleteServiceHookOptions deleteServiceHookReleaseOptions = new DeleteServiceHookOptions();
                    deleteServiceHookReleaseOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
                    deleteServiceHookReleaseOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
                    deleteServiceHookReleaseOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
                    deleteServiceHookReleaseOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
                    deleteServiceHookReleaseOptions.EventType            = "release";
                    deleteServiceHookReleaseOptions.ServiceHookId        = @event.ReleaseServiceHookId.Value;

                    await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookReleaseOptions);
                }

                if (@event.ReleaseStageId.HasValue)
                {
                    DeleteReleaseDefinitionOptions deleteReleaseDefinitionOptions = new DeleteReleaseDefinitionOptions();
                    deleteReleaseDefinitionOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
                    deleteReleaseDefinitionOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
                    deleteReleaseDefinitionOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
                    deleteReleaseDefinitionOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
                    deleteReleaseDefinitionOptions.ProjectExternalId    = @event.ProjectExternalId;
                    deleteReleaseDefinitionOptions.ReleaseStageId       = @event.ReleaseStageId;

                    await _pipelineSpaceManagerService.DeleteReleaseDefinition(deleteReleaseDefinitionOptions);
                }

                if (@event.CMSType == ConfigurationManagementService.VSTS)
                {
                    DeleteServiceHookOptions deleteServiceHookCodeOptions = new DeleteServiceHookOptions();
                    deleteServiceHookCodeOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
                    deleteServiceHookCodeOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
                    deleteServiceHookCodeOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
                    deleteServiceHookCodeOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
                    deleteServiceHookCodeOptions.EventType            = "build";
                    deleteServiceHookCodeOptions.ServiceHookId        = @event.CodeServiceHookId.Value;

                    await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookCodeOptions);
                }

                if (@event.CommitServiceHookId.HasValue)
                {
                    DeleteServiceHookOptions deleteServiceHookBuildOptions = new DeleteServiceHookOptions();
                    deleteServiceHookBuildOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
                    deleteServiceHookBuildOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
                    deleteServiceHookBuildOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
                    deleteServiceHookBuildOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
                    deleteServiceHookBuildOptions.EventType            = "build";
                    deleteServiceHookBuildOptions.ServiceHookId        = @event.CommitServiceHookId.Value;

                    await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookBuildOptions);
                }

                if (@event.CommitStageId.HasValue)
                {
                    DeleteBuildDefinitionOptions deleteBuildDefinitionOptions = new DeleteBuildDefinitionOptions();
                    deleteBuildDefinitionOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
                    deleteBuildDefinitionOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
                    deleteBuildDefinitionOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
                    deleteBuildDefinitionOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
                    deleteBuildDefinitionOptions.ProjectExternalId    = @event.ProjectExternalId;
                    deleteBuildDefinitionOptions.CommitStageId        = @event.CommitStageId;

                    await _pipelineSpaceManagerService.DeleteBuildDefinition(deleteBuildDefinitionOptions);
                }

                await _projectServiceHandlerService(@event.CMSType).DeleteRepository(@event);
            }

            if (@event.SourceEvent == Domain.Models.Enums.SourceEvent.Organization ||
                @event.SourceEvent == Domain.Models.Enums.SourceEvent.Project)
            {
                if (@event.CMSType == ConfigurationManagementService.GitHub || @event.CMSType == ConfigurationManagementService.Bitbucket || @event.CMSType == ConfigurationManagementService.GitLab)
                {
                    await _projectServiceHandlerService(@event.CMSType).DeleteRepository(@event);
                }
            }
        }
        public async Task Handle(ProjectEnvironmentInactivatedEvent @event)
        {
            /*Delete Infrastructure*/
            CPSAuthModel authModel = new CPSAuthModel();

            authModel.AccessId        = @event.CPSAccessId;
            authModel.AccessName      = @event.CPSAccessName;
            authModel.AccessSecret    = @event.CPSAccessSecret;
            authModel.AccessRegion    = @event.CPSAccessRegion;
            authModel.AccessAppId     = @event.CPSAccessAppId;
            authModel.AccessAppSecret = @event.CPSAccessAppSecret;
            authModel.AccessDirectory = @event.CPSAccessDirectory;

            string cloudServiceName = $"{@event.OrganizationName}{@event.ProjectName}{@event.ServiceName}{@event.EnvironmentName}root".ToLower();

            await _cpsService(@event.CPSType).DeleteService(cloudServiceName, authModel);

            ReadReleaseDefinitionOptions readReleaseDefinitionOptions = new ReadReleaseDefinitionOptions();

            readReleaseDefinitionOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
            readReleaseDefinitionOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
            readReleaseDefinitionOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
            readReleaseDefinitionOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;

            readReleaseDefinitionOptions.OrganizationName = @event.OrganizationName;
            readReleaseDefinitionOptions.ProjectName      = @event.ProjectName;
            readReleaseDefinitionOptions.ReleaseStageId   = @event.ReleseStageId;

            var releaseDefinition = await _pipelineSpaceManagerService.GetReleaseDefinition(readReleaseDefinitionOptions);

            var productionEnvironment    = releaseDefinition.Environments.FirstOrDefault(x => x.Name.Equals(DomainConstants.Environments.Production));
            var lastAvailableEnvironment = releaseDefinition.Environments.Where(x => !x.Name.Equals(DomainConstants.Environments.Production)).OrderByDescending(x => x.Id).First();

            var existingEnvironment = releaseDefinition.Environments.FirstOrDefault(x => x.Name.Equals(@event.EnvironmentName, StringComparison.InvariantCultureIgnoreCase));

            if (existingEnvironment != null)
            {
                /*Environment Variables*/
                var baseEnvironmentVariables  = ((JObject)existingEnvironment.Variables);
                var propertyEnvironmentEnable = ((JObject)baseEnvironmentVariables).GetValue("PS_ENVIRONMENT_ENABLE");
                if (propertyEnvironmentEnable != null)
                {
                    propertyEnvironmentEnable["value"] = "False";
                }
            }

            releaseDefinition.PipelineProcess = new CMSVSTSReleaseDefinitionPipelineProcessCreateModel()
            {
                Type = "designer"
            };
            releaseDefinition.Properties = new CMSVSTSReleaseDefinitionPropertiesCreateModel()
            {
                DefinitionCreationSource = new CMSVSTSReleaseDefinitionPropertiesItemCreateModel()
                {
                    Type  = "System.String",
                    Value = "ReleaseNew"
                }
            };

            UpdateReleaseDefinitionOptions updateReleaseDefinitionOptions = new UpdateReleaseDefinitionOptions();

            updateReleaseDefinitionOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
            updateReleaseDefinitionOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
            updateReleaseDefinitionOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
            updateReleaseDefinitionOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;

            updateReleaseDefinitionOptions.OrganizationName = @event.OrganizationName;
            updateReleaseDefinitionOptions.ProjectName      = @event.ProjectName;
            updateReleaseDefinitionOptions.Model            = releaseDefinition;

            await _pipelineSpaceManagerService.UpdateReleaseDefinition(updateReleaseDefinitionOptions);
        }
Beispiel #8
0
        public async Task Handle(ProjectFeatureServiceDeletedEvent @event)
        {
            CPSAuthModel authModel = new CPSAuthModel();

            authModel.AccessId        = @event.CPSAccessId;
            authModel.AccessName      = @event.CPSAccessName;
            authModel.AccessSecret    = @event.CPSAccessSecret;
            authModel.AccessRegion    = @event.CPSAccessRegion;
            authModel.AccessAppId     = @event.CPSAccessAppId;
            authModel.AccessAppSecret = @event.CPSAccessAppSecret;
            authModel.AccessDirectory = @event.CPSAccessDirectory;

            /*cloud service (stack or resourcegroup)*/
            string cloudServiceName = $"{@event.OrganizationName}{@event.ProjectName}{@event.ServiceName}development{@event.FeatureName}".ToLower();

            await _cpsService(@event.CPSType).DeleteService(cloudServiceName, authModel);

            DeleteServiceHookOptions deleteServiceHookReleaseStartedOptions = new DeleteServiceHookOptions();

            deleteServiceHookReleaseStartedOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
            deleteServiceHookReleaseStartedOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
            deleteServiceHookReleaseStartedOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
            deleteServiceHookReleaseStartedOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
            deleteServiceHookReleaseStartedOptions.EventType            = "release";
            deleteServiceHookReleaseStartedOptions.ServiceHookId        = @event.ReleaseStartedServiceHookId.Value;

            await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookReleaseStartedOptions);

            DeleteServiceHookOptions deleteServiceHookReleasePendingApprovalOptions = new DeleteServiceHookOptions();

            deleteServiceHookReleasePendingApprovalOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
            deleteServiceHookReleasePendingApprovalOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
            deleteServiceHookReleasePendingApprovalOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
            deleteServiceHookReleasePendingApprovalOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
            deleteServiceHookReleasePendingApprovalOptions.EventType            = "release";
            deleteServiceHookReleasePendingApprovalOptions.ServiceHookId        = @event.ReleasePendingApprovalServiceHookId.Value;

            await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookReleasePendingApprovalOptions);

            DeleteServiceHookOptions deleteServiceHookReleaseCompletedApprovalOptions = new DeleteServiceHookOptions();

            deleteServiceHookReleaseCompletedApprovalOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
            deleteServiceHookReleaseCompletedApprovalOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
            deleteServiceHookReleaseCompletedApprovalOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
            deleteServiceHookReleaseCompletedApprovalOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
            deleteServiceHookReleaseCompletedApprovalOptions.EventType            = "release";
            deleteServiceHookReleaseCompletedApprovalOptions.ServiceHookId        = @event.ReleaseCompletedApprovalServiceHookId.Value;

            await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookReleaseCompletedApprovalOptions);

            DeleteServiceHookOptions deleteServiceHookBuildOptions = new DeleteServiceHookOptions();

            deleteServiceHookBuildOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
            deleteServiceHookBuildOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
            deleteServiceHookBuildOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
            deleteServiceHookBuildOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
            deleteServiceHookBuildOptions.EventType            = "release";
            deleteServiceHookBuildOptions.ServiceHookId        = @event.ReleaseServiceHookId.Value;

            await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookBuildOptions);

            DeleteReleaseDefinitionOptions deleteReleaseDefinitionOptions = new DeleteReleaseDefinitionOptions();

            deleteReleaseDefinitionOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
            deleteReleaseDefinitionOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
            deleteReleaseDefinitionOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
            deleteReleaseDefinitionOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
            deleteReleaseDefinitionOptions.ProjectExternalId    = @event.ProjectExternalId;
            deleteReleaseDefinitionOptions.ReleaseStageId       = @event.ReleaseStageId;

            await _pipelineSpaceManagerService.DeleteReleaseDefinition(deleteReleaseDefinitionOptions);

            if (@event.CMSType == ConfigurationManagementService.VSTS)
            {
                DeleteServiceHookOptions deleteServiceHookCodeOptions = new DeleteServiceHookOptions();
                deleteServiceHookCodeOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
                deleteServiceHookCodeOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
                deleteServiceHookCodeOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
                deleteServiceHookCodeOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
                deleteServiceHookCodeOptions.EventType            = "build";
                deleteServiceHookCodeOptions.ServiceHookId        = @event.CodeServiceHookId.Value;

                await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookCodeOptions);
            }

            DeleteServiceHookOptions deleteServiceHookReleaseOptions = new DeleteServiceHookOptions();

            deleteServiceHookReleaseOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
            deleteServiceHookReleaseOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
            deleteServiceHookReleaseOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
            deleteServiceHookReleaseOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
            deleteServiceHookReleaseOptions.EventType            = "build";
            deleteServiceHookReleaseOptions.ServiceHookId        = @event.CommitServiceHookId.Value;

            await _pipelineSpaceManagerService.DeleteServiceHook(deleteServiceHookReleaseOptions);

            DeleteBuildDefinitionOptions deleteBuildDefinitionOptions = new DeleteBuildDefinitionOptions();

            deleteBuildDefinitionOptions.VSTSAPIVersion       = _vstsOptions.Value.ApiVersion;
            deleteBuildDefinitionOptions.VSTSAccountName      = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccountName : _fakeAccountOptions.Value.AccountId;
            deleteBuildDefinitionOptions.VSTSAccessSecret     = @event.CMSType == ConfigurationManagementService.VSTS ? @event.CMSAccessSecret : _fakeAccountOptions.Value.AccessSecret;
            deleteBuildDefinitionOptions.VSTSAccountProjectId = @event.CMSType == ConfigurationManagementService.VSTS ? @event.ProjectName : @event.ProjectVSTSFakeName;
            deleteBuildDefinitionOptions.ProjectExternalId    = @event.ProjectExternalId;
            deleteBuildDefinitionOptions.CommitStageId        = @event.CommitStageId;

            await _pipelineSpaceManagerService.DeleteBuildDefinition(deleteBuildDefinitionOptions);

            DeleteBranchOptions deleteBranchOptions = new DeleteBranchOptions();

            deleteBranchOptions.ProjectName               = @event.ProjectName;
            deleteBranchOptions.FeatureName               = @event.FeatureName;
            deleteBranchOptions.ServiceName               = @event.ServiceName;
            deleteBranchOptions.VSTSAccessId              = _vstsOptions.Value.AccessId;
            deleteBranchOptions.VSTSAccessSecret          = _vstsOptions.Value.AccessSecret;
            deleteBranchOptions.VSTSRepositoryTemplateUrl = @event.ServiceTemplateUrl;
            deleteBranchOptions.GitProviderType           = @event.CMSType;
            deleteBranchOptions.GitProviderAccessId       = @event.CMSAccessId;
            deleteBranchOptions.GitProviderAccessSecret   = @event.CMSAccessSecret;
            deleteBranchOptions.GitProviderAccessToken    = @event.CMSAccessToken;
            deleteBranchOptions.GitProviderRepositoryUrl  = @event.ServiceExternalUrl;

            await _pipelineSpaceManagerService.DeleteBranch(deleteBranchOptions);
        }