/// <summary> /// Creates a policy in Azure DevOps. /// </summary> /// <param name="policyClient">Policy client</param> /// <param name="types">Types</param> /// <param name="projectId">Team project id</param> /// <param name="repository">Git repository</param> /// <param name="currentPolicy">Branch policy</param> /// <param name="policy">Policy</param> /// <returns>Task</returns> protected abstract Task CreatePolicy( PolicyHttpClient policyClient, IEnumerable <PolicyType> types, Guid projectId, GitRepository repository, BranchPolicies currentPolicy, Policy policy);
/// <summary> /// Logs the change. /// </summary> /// <param name="policyClient">Policy client</param> /// <param name="types">Types</param> /// <param name="projectId">Team project id</param> /// <param name="repository">Git repository</param> /// <param name="currentPolicy">Branch policy</param> /// <param name="policy">Policy</param> /// <returns>Task</returns> #pragma warning disable 1998 protected override async Task CreatePolicy( PolicyHttpClient policyClient, IEnumerable <PolicyType> types, Guid projectId, GitRepository repository, BranchPolicies currentPolicy, Policy policy) { this.Logger.Info($"Policy not found in Azure DevOps, would be created. (Repository: {repository.Name}, Branch: {currentPolicy.Branch}, Type: {policy.TypeString})"); this.Logger.Debug($"Settings is: {policy.PrepareSettingsWithScopeAndSubType(repository.Id, policy)}"); }
private void HandleBranchChanges( PolicyHttpClient policyClient, Guid projectId, GitRepository repository, IEnumerable <PolicyConfiguration> serverPolicies, IEnumerable <PolicyType> types, List <int> handledServerPolicies, BranchPolicies currentPolicy, List <Task> resultList) { foreach (var policy in currentPolicy.Policies) { bool hasMatch = false; policy.PreparePolicyType(types); if (policy.PolicyType == null) { this.Logger.Warn($"Type not found. (Branch: {currentPolicy.Branch}, Type: {policy.Type})"); } if (serverPolicies != null) { foreach (var serverPolicy in serverPolicies) { if (policy.PolicyType.Id == serverPolicy.Type.Id && serverPolicy.DoesSubTypeMatch(policy) && ((serverPolicy.GetBranch() == null) || // Repository specific (serverPolicy.GetBranch() == policy.Branch && serverPolicy.GetMatchKind() == policy.MatchKind))) { hasMatch = true; handledServerPolicies.Add(serverPolicy.Id); if (policy.PolicyEquals(serverPolicy)) { this.Logger.Info($"Policy is up to date. (Repository: {repository.Name}, Branch: {currentPolicy.Branch}, Type: {policy.TypeString})"); } else { resultList.Add(this.UpdatePolicy(policyClient, types, projectId, repository, currentPolicy, policy, serverPolicy)); } break; } } } if (!hasMatch) { resultList.Add(this.CreatePolicy(policyClient, types, projectId, repository, currentPolicy, policy)); } } }
/// <summary> /// Creates a policy in Azure DevOps. /// </summary> /// <param name="policyClient">Policy client</param> /// <param name="types">Types</param> /// <param name="projectId">Team project id</param> /// <param name="repository">Git repository</param> /// <param name="currentPolicy">Branch policy</param> /// <param name="policy">Policy</param> /// <returns>Task</returns> protected override async Task CreatePolicy( PolicyHttpClient policyClient, IEnumerable <PolicyType> types, Guid projectId, GitRepository repository, BranchPolicies currentPolicy, Policy policy) { var policyConfiguration = this.GetPolicyConfiguration(types, repository, policy); var result = await policyClient.CreatePolicyConfigurationAsync(policyConfiguration, projectId).ConfigureAwait(false); this.Logger.Debug(this.Serializer.Serialize(result)); this.Logger.Info($"Policy created. (Repository: {repository.Name}, Branch: {currentPolicy.Branch}, Type: {policy.TypeString})"); }