public RequestRepairAction(CoordinatorEnvironment environment, IPolicyAgentClient policyAgentClient, IRepairTask repairTask, RepairActionProvider repairActionProvider) : base(environment, ActionType.RequestRepair) { this.policyAgentClient = policyAgentClient.Validate("policyAgentClient"); this.repairTask = repairTask.Validate("repairTask"); this.repairActionProvider = repairActionProvider.Validate("repairActionProvider"); }
public AzureParallelInfrastructureCoordinatorFactory( Uri serviceName, IConfigStore configStore, string configSectionName, Guid partitionId, long replicaId, IInfrastructureAgentWrapper agent) { this.serviceName = serviceName.Validate("serviceName"); configStore.Validate("configStore"); configSectionName.Validate("configSectionName"); this.agent = agent.Validate("agent"); this.configSection = new ConfigSection(TraceType, configStore, configSectionName); this.partitionId = partitionId; this.replicaId = replicaId; try { this.tenantId = AzureHelper.GetTenantId(configSection); } catch (Exception ex) { // this happens on the Linux environment (since there is no registry) this.tenantId = PartitionIdPrefix + partitionId; TraceType.WriteWarning("Unable to get tenant Id from configuration. Using partition Id '{0}' text instead. Exception: {1}", this.tenantId, ex); } // TODO use tenant ID or config section name suffix as base trace ID? this.env = new CoordinatorEnvironment(this.serviceName.AbsoluteUri, this.configSection, tenantId, this.agent); this.activityLogger = new ActivityLoggerFactory().Create(env.CreateTraceType("Event")); this.policyAgentServiceWrapper = new PolicyAgentServiceWrapper(env, activityLogger); }
public JobBlockingActionPolicy(CoordinatorEnvironment environment, IJobBlockingPolicyManager jobBlockingPolicyManager) { environment.Validate("environment"); this.jobBlockingPolicyManager = jobBlockingPolicyManager.Validate("jobBlockingPolicyManager"); this.traceType = environment.CreateTraceType("PolicyJobBlocking"); }
public PolicyAgentServiceWrapper(CoordinatorEnvironment environment, IActivityLogger activityLogger, Uri zeroSdkUri = null, bool silentErrors = false) { this.traceType = environment.Validate("environment").CreateTraceType("ZeroSdkClient"); this.activityLogger = activityLogger.Validate("activityLogger"); this.traceWriteConditionalWarning = silentErrors ? new WriteTraceDelegate(traceType.WriteInfo) : new WriteTraceDelegate(traceType.WriteWarning); this.zeroSdkUri = zeroSdkUri ?? GetMRZeroSdkUri(environment.Config); }
public ServiceFabricRepairManager(CoordinatorEnvironment environment, IActivityLogger activityLogger) { this.activityLogger = activityLogger.Validate("activityLogger"); this.traceType = environment.Validate("environment").CreateTraceType("RMClient"); this.repairManager = this.fabricClient.RepairManager; }
public MoveToExecutingAction(CoordinatorEnvironment environment, IRepairManager repairManager, IRepairTask repairTask, string warning = null) : base(environment, ActionType.Execute) { this.repairManager = repairManager.Validate("repairManager"); this.repairTask = repairTask.Validate("repairTask"); this.warning = warning; }
public AzureParallelDisabledCoordinator( CoordinatorEnvironment environment, string tenantId, Func <Task <IPolicyAgentClient> > policyAgentClientAsyncFactory, IRepairManager repairManager, IHealthClient healthClient, IActivityLogger activityLogger, Guid partitionId, long replicaId) { this.environment = environment.Validate("environment"); this.tenantId = tenantId.Validate("tenantId"); this.partitionId = partitionId; this.policyAgentClientAsyncFactory = policyAgentClientAsyncFactory.Validate("policyAgentClientAsyncFactory"); this.traceType = environment.CreateTraceType("DisabledCoordinator"); this.repairManager = repairManager.Validate("repairManager"); this.healthClient = healthClient.Validate("healthClient"); this.configSection = environment.Config; this.activityLogger = activityLogger.Validate("activityLogger"); var assembly = this.GetType().GetTypeInfo().Assembly; assemblyFileVersion = FileVersionInfo.GetVersionInfo(assembly.Location).FileVersion; }
public CancelRestoringHealthCheckAction( CoordinatorEnvironment environment, IRepairManager repairManager, IRepairTask repairTask) : base(environment, ActionType.Restore) { this.repairManager = repairManager.Validate("repairManager"); this.repairTask = repairTask.Validate("repairTask"); }
public DefaultActionPolicyFactory( CoordinatorEnvironment environment, IJobBlockingPolicyManager jobBlockingPolicyManager, IAllowActionMap allowActionMap) { this.environment = environment.Validate("environment"); this.jobBlockingPolicyManager = jobBlockingPolicyManager.Validate("jobBlockingPolicyManager"); this.allowActionMap = allowActionMap.Validate("allowActionMap"); }
public ServiceFabricRepairManagerFactory(CoordinatorEnvironment environment, IActivityLogger activityLogger) { this.activityLogger = activityLogger.Validate("activityLogger"); this.fabricClient = new FabricClient(); this.environment = environment.Validate("environment"); this.retryPolicyFactory = new LinearRetryPolicyFactory( environment.DefaultTraceType, Constants.BackoffPeriodInMilliseconds, Constants.MaxRetryAttempts, ex => ex is TimeoutException); }
public ActionFactory( CoordinatorEnvironment environment, IPolicyAgentClient policyAgentClient, IRepairManager repairManager, RepairActionProvider repairActionProvider) { this.environment = environment.Validate("environment"); this.policyAgentClient = policyAgentClient.Validate("policyAgentClient"); this.repairManager = repairManager.Validate("repairManager"); this.repairActionProvider = repairActionProvider.Validate("repairActionProvider"); this.jobResponseMap = new Dictionary <Guid, JobStepResponseEnum>(); }
public CreateInPreparingAction( CoordinatorEnvironment environment, IRepairManager repairManager, ITenantJob tenantJob, bool surpriseJob, RepairTaskPrepareArgs args) : base(environment, ActionType.Prepare) { this.repairManager = repairManager.Validate("repairManager"); this.tenantJob = tenantJob.Validate("tenantJob"); this.surpriseJob = surpriseJob; this.args = args.Validate("args"); }
public ClaimedRepairTaskAction( CoordinatorEnvironment environment, IRepairManager repairManager, IRepairTask repairTask, IList <string> roleInstanceNames, RepairActionProvider repairActionProvider) : base(environment, ActionType.None) { this.repairManager = repairManager.Validate("repairManager"); this.repairTask = repairTask.Validate("repairTask"); this.roleInstanceNames = roleInstanceNames.Validate("roleInstanceName"); this.repairActionProvider = repairActionProvider.Validate("repairActionProvider"); }
public ExecuteJobAction( CoordinatorEnvironment environment, Action <Guid> approveJobAction, IRepairManager repairManager, ITenantJob tenantJob, IRepairTask repairTask) : base(environment, ActionType.None) { this.approveJobAction = approveJobAction.Validate("approveJobAction"); this.repairManager = repairManager.Validate("repairManager"); this.tenantJob = tenantJob.Validate("tenantJob"); this.repairTask = repairTask.Validate("repairTask"); }
public MoveToCompletedAction( CoordinatorEnvironment environment, IRepairManager repairManager, IRepairTask repairTask, RepairTaskResult repairTaskResult, string repairTaskResultDetails, bool surpriseJob) : base(environment, ActionType.None) { this.repairManager = repairManager.Validate("repairManager"); this.repairTask = repairTask.Validate("repairTask"); this.repairTaskResult = repairTaskResult; this.repairTaskResultDetails = repairTaskResultDetails; this.surpriseJob = surpriseJob; }
public CoordinatorCommandProcessor( CoordinatorEnvironment environment, IPolicyAgentClient policyAgentClient, IJobBlockingPolicyManager jobBlockingPolicyManager, IAllowActionMap allowActionMap) { this.environment = environment.Validate("environment"); this.policyAgentClient = policyAgentClient.Validate("policyAgentClient"); this.jobBlockingPolicyManager = jobBlockingPolicyManager.Validate("jobBlockingPolicyManager"); this.allowActionMap = allowActionMap.Validate("allowActionMap"); this.traceType = environment.CreateTraceType("CommandProcessor"); this.commandHandler = new CommandHandler(this.traceType); RegisterCommandHandlers(); }
public MoveToRestoringAction( CoordinatorEnvironment environment, IRepairManager repairManager, IRepairTask repairTask, RepairTaskResult repairTaskResult, string repairTaskResultDetails, bool surpriseJob, bool cancelRestoringHealthCheck, bool processRemovedNodes) : base(environment, ActionType.Restore) { this.repairManager = repairManager.Validate("repairManager"); this.repairTask = repairTask.Validate("repairTask"); this.repairTaskResult = repairTaskResult; this.repairTaskResultDetails = repairTaskResultDetails; this.surpriseJob = surpriseJob; this.cancelRestoringHealthCheck = cancelRestoringHealthCheck; this.processRemovedNodes = processRemovedNodes; }
public AzureParallelInfrastructureCoordinator( CoordinatorEnvironment environment, string tenantId, IPolicyAgentClient policyAgentClient, IRepairManager repairManager, IHealthClient healthClient, ICoordinatorCommandProcessor coordinatorCommandProcessor, IJobBlockingPolicyManager jobBlockingPolicyManager, IActionPolicyFactory actionPolicyFactory, IActivityLogger activityLogger, Guid partitionId, long replicaId) { this.environment = environment.Validate("environment"); this.tenantId = tenantId.Validate("tenantId"); this.partitionId = partitionId; this.policyAgentClient = policyAgentClient.Validate("policyAgentClient"); this.traceType = environment.CreateTraceType("Coordinator"); this.actionTraceType = environment.CreateTraceType("Action"); this.repairManager = repairManager.Validate("repairManager"); this.healthClient = healthClient.Validate("healthClient"); this.configSection = environment.Config; this.coordinatorCommandProcessor = coordinatorCommandProcessor.Validate("coordinatorCommandProcessor"); this.jobBlockingPolicyManager = jobBlockingPolicyManager.Validate("jobBlockingPolicyManager"); this.actionPolicies = actionPolicyFactory.Validate("actionPolicyFactory").Create(); this.activityLogger = activityLogger.Validate("activityLogger"); var assembly = this.GetType().GetTypeInfo().Assembly; assemblyFileVersion = FileVersionInfo.GetVersionInfo(assembly.Location).FileVersion; var healthWatchdogFactory = new RoleInstanceHealthWatchdogFactory(configSection, healthClient); roleInstanceHealthWatchdog = healthWatchdogFactory.Create(Constants.ConfigKeys.ConfigKeyPrefix); }
public JobClassifier(CoordinatorEnvironment environment) { this.config = environment.Config; this.traceType = environment.CreateTraceType("JobClassifier"); }
public CancelJobAction(CoordinatorEnvironment environment, IPolicyAgentClient policyAgentClient, ITenantJob tenantJob) : base(environment, ActionType.None) { this.policyAgentClient = policyAgentClient.Validate("policyAgentClient"); this.tenantJob = tenantJob.Validate("tenantJob"); }
protected Action(CoordinatorEnvironment environment, ActionType actionType) { this.Environment = environment.Validate("environment"); this.ActionType = actionType; }
private static NodeRepairImpactDescription GetImpactFromDetails(ITenantJob tenantJob, CoordinatorEnvironment environment) { environment.Validate("environment"); var translator = new ImpactTranslator(environment); var impact = new NodeRepairImpactDescription(); if (tenantJob.JobStep == null || tenantJob.JobStep.CurrentlyImpactedRoleInstances == null) { return(impact); } foreach (var roleInstance in tenantJob.JobStep.CurrentlyImpactedRoleInstances) { string nodeName = roleInstance.RoleInstanceName.TranslateRoleInstanceToNodeName(); NodeImpactLevel impactLevel = translator.TranslateImpactDetailToNodeImpactLevel( tenantJob.ImpactDetail.ImpactAction, roleInstance.ExpectedImpact); if (impactLevel != NodeImpactLevel.None) { var nodeImpact = new NodeImpact(nodeName, impactLevel); impact.ImpactedNodes.Add(nodeImpact); } } return(impact); }
public static RepairTaskPrepareArgs FromTenantJob( ITenantJob tenantJob, int jobDocIncarnation, CoordinatorEnvironment environment, bool isVendorRepair, bool restoringHealthCheckOnly, string description = null) { tenantJob.Validate("tenantJob"); environment.Validate("environment"); var jobId = tenantJob.Id; var ud = tenantJob.GetJobUD(); string jobStepId = tenantJob.GetJobStepId(); if (jobStepId == null) { environment.DefaultTraceType.WriteWarning( "RepairTaskPrepareArgs.FromTenantJob: not continuing since job step ID is null in job: {0}", tenantJob.ToJson()); return(null); } // use the role instance names from the JobStep. Don't use tenantJob.RoleInstancesToBeImpacted // since that lists all the role instances that will be impacted. // E.g. in a tenant update job, where multiple UDs are walked, if there are 8 role instances, // tenantJob.RoleInstancesToBeImpacted will list all 8, whereas // tenantJob.JobStep.CurrentlyImpactedRoleInstances will list only those in the current UD of the jobstep var nodeNames = new List <string>(); if (tenantJob.JobStep.CurrentlyImpactedRoleInstances != null) { nodeNames.AddRange(tenantJob.JobStep.CurrentlyImpactedRoleInstances.Select( e => e.RoleInstanceName.TranslateRoleInstanceToNodeName())); } var executorData = new RepairTaskExecutorData { JobId = jobId.ToString(), UD = ud, StepId = jobStepId, }; if (isVendorRepair) { executorData.Flags = RepairTaskExecutorData.VendorRepairFlag; } string repairTaskId = GenerateRepairTaskId( tenantJob.GetImpactAction(), jobId, ud, jobDocIncarnation); string repairAction = GenerateRepairAction(tenantJob.GetImpactAction()); var args = new RepairTaskPrepareArgs() { TaskId = repairTaskId, Description = description, Action = repairAction, ExecutorData = executorData, Target = new NodeRepairTargetDescription(nodeNames), }; if (restoringHealthCheckOnly) { args.Impact = new NodeRepairImpactDescription(); args.PerformPreparingHealthCheck = false; args.PerformRestoringHealthCheck = true; } else { args.Impact = GetImpactFromDetails(tenantJob, environment); args.PerformPreparingHealthCheck = tenantJob.DoesJobRequirePreparingHealthCheck(environment.Config); args.PerformRestoringHealthCheck = tenantJob.DoesJobRequireRestoringHealthCheck(environment.Config); } if (tenantJob.IsTenantUpdateJobType() && nodeNames.Count == 0) { // Never perform health checks on TenantUpdate job steps that have zero role // instances listed. These occur at the end of each UD walk when the tenant // setting Tenant.PolicyAgent.TenantUpdateUdCleanupApprovalRequired == true. args.PerformPreparingHealthCheck = false; args.PerformRestoringHealthCheck = false; } return(args); }
public ServiceFabricRepairManagerFactory(CoordinatorEnvironment environment, IActivityLogger activityLogger, string[] hostEndpoints) { this.activityLogger = activityLogger.Validate("activityLogger"); this.fabricClient = new FabricClient(new FabricClientSettings(), hostEndpoints); this.environment = environment.Validate("environment"); }
public PrePostExecuteActionPolicy(CoordinatorEnvironment environment) { this.traceType = environment.Validate("environment").CreateTraceType("PolicyPrePostExecute"); this.config = environment.Config; }
public AckJobAction(CoordinatorEnvironment environment, Action <Guid> approveJobAction, ITenantJob tenantJob) : base(environment, ActionType.None) { this.approveJobAction = approveJobAction.Validate("approveJobAction"); this.tenantJob = tenantJob.Validate("tenantJob"); }
public ExternalAllowActionPolicy(CoordinatorEnvironment environment, IAllowActionMap allowActionMap) { this.traceType = environment.Validate("environment").CreateTraceType("PolicyExternalAllow"); this.allowActionMap = allowActionMap.Validate("allowActionMap"); }
public ImpactTranslator(CoordinatorEnvironment environment) { environment.Validate("environment"); this.configSection = environment.Config; this.tracer = environment.CreateTraceType("ImpactTranslator"); }
public PolicyAgentClient(CoordinatorEnvironment environment, IPolicyAgentServiceWrapper policyAgentService, IActivityLogger activityLogger) { this.traceType = environment.Validate("environment").CreateTraceType("PolicyAgentClient"); this.policyAgentService = policyAgentService.Validate("policyAgentService"); this.activityLogger = activityLogger.Validate("activityLogger"); }
public JobThrottlingActionPolicy(CoordinatorEnvironment environment) { environment.Validate("environment"); this.configSection = environment.Config; this.traceType = environment.CreateTraceType("PolicyJobThrottling"); }