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(); } }
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()); } }
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(); } }
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); }
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); }