public async Task UpdatePolicyAsync(JobBlockingPolicy newBlockingPolicy)
 {
     // no write-conflict handling here. we just throw the exception for callers to handle
     await versionedPropertyStore
     .UpdateValueAsync(Guid.NewGuid(), PolicyPropertyName, PolicyVersionName, newBlockingPolicy.ToString())
     .ConfigureAwait(false);
 }
Exemple #2
0
        private bool IsBlocked(JobBlockingPolicy policy, IMappedTenantJob mappedTenantJob)
        {
            var job = mappedTenantJob.TenantJob;

            switch (policy)
            {
            case JobBlockingPolicy.BlockNone:
                return(false);

            case JobBlockingPolicy.BlockAllJobs:
            case JobBlockingPolicy.BlockAllNewJobs:
                return(true);

            case JobBlockingPolicy.BlockNewMaintenanceJob:
                return(job.IsRepairJobType());

            case JobBlockingPolicy.BlockNewUpdateJob:
                return(job.IsUpdateJobType());

            case JobBlockingPolicy.BlockNewImpactfulTenantUpdateJobs:
                return(job.IsTenantUpdateJobType() && (mappedTenantJob.ImpactedNodeCount > 0));

            case JobBlockingPolicy.BlockNewImpactfulPlatformUpdateJobs:
                return(job.IsPlatformUpdateJobType() && (mappedTenantJob.ImpactedNodeCount > 0));

            case JobBlockingPolicy.BlockNewImpactfulUpdateJobs:
                return(job.IsUpdateJobType() && (mappedTenantJob.ImpactedNodeCount > 0));
            }

            traceType.WriteError("Invalid value for job blocking policy. Not approving any job till this is resolved. Policy: {0}", policy);
            return(true);
        }
Exemple #3
0
 public Task UpdatePolicyAsync(JobBlockingPolicy newBlockingPolicy)
 {
     Policy = newBlockingPolicy;
     return(Task.FromResult(0));
 }
Exemple #4
0
 public MockJobBlockingPolicyManager()
 {
     Policy = JobBlockingPolicy.BlockNone;
 }