/// <summary> /// Initializes a new instance of the StatefulServiceUpdateDescription class. /// </summary> /// <param name="flags">Flags indicating whether other properties are set. Each of the associated properties /// corresponds to a flag, specified below, which, if set, indicate that the property is specified. /// This property can be a combination of those flags obtained using bitwise 'OR' operator. /// For example, if the provided value is 6 then the flags for ReplicaRestartWaitDuration (2) and /// QuorumLossWaitDuration (4) are set. /// /// - None - Does not indicate any other properties are set. The value is zero. /// - TargetReplicaSetSize/InstanceCount - Indicates whether the TargetReplicaSetSize property (for Stateful services) /// or the InstanceCount property (for Stateless services) is set. The value is 1. /// - ReplicaRestartWaitDuration - Indicates the ReplicaRestartWaitDuration property is set. The value is 2. /// - QuorumLossWaitDuration - Indicates the QuorumLossWaitDuration property is set. The value is 4. /// - StandByReplicaKeepDuration - Indicates the StandByReplicaKeepDuration property is set. The value is 8. /// - MinReplicaSetSize - Indicates the MinReplicaSetSize property is set. The value is 16. /// - PlacementConstraints - Indicates the PlacementConstraints property is set. The value is 32. /// - PlacementPolicyList - Indicates the ServicePlacementPolicies property is set. The value is 64. /// - Correlation - Indicates the CorrelationScheme property is set. The value is 128. /// - Metrics - Indicates the ServiceLoadMetrics property is set. The value is 256. /// - DefaultMoveCost - Indicates the DefaultMoveCost property is set. The value is 512. /// - ScalingPolicy - Indicates the ScalingPolicies property is set. The value is 1024. /// - ServicePlacementTimeLimit - Indicates the ServicePlacementTimeLimit property is set. The value is 2048. /// - MinInstanceCount - Indicates the MinInstanceCount property is set. The value is 4096. /// - MinInstancePercentage - Indicates the MinInstancePercentage property is set. The value is 8192. /// - InstanceCloseDelayDuration - Indicates the InstanceCloseDelayDuration property is set. The value is 16384. /// - InstanceRestartWaitDuration - Indicates the InstanceCloseDelayDuration property is set. The value is 32768. /// - DropSourceReplicaOnMove - Indicates the DropSourceReplicaOnMove property is set. The value is 65536. /// - ServiceDnsName - Indicates the ServiceDnsName property is set. The value is 131072. /// - TagsForPlacement - Indicates the TagsForPlacement property is set. The value is 1048576. /// - TagsForRunning - Indicates the TagsForRunning property is set. The value is 2097152. /// </param> /// <param name="placementConstraints">The placement constraints as a string. Placement constraints are boolean /// expressions on node properties and allow for restricting a service to particular nodes based on the service /// requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == /// blue)".</param> /// <param name="correlationScheme">The correlation scheme.</param> /// <param name="loadMetrics">The service load metrics.</param> /// <param name="servicePlacementPolicies">The service placement policies.</param> /// <param name="defaultMoveCost">The move cost for the service. Possible values include: 'Zero', 'Low', 'Medium', /// 'High', 'VeryHigh' /// /// Specifies the move cost for the service. /// </param> /// <param name="scalingPolicies">Scaling policies for this service.</param> /// <param name="serviceDnsName">The DNS name of the service.</param> /// <param name="tagsForPlacement">Tags for placement of this service.</param> /// <param name="tagsForRunning">Tags for running of this service.</param> /// <param name="targetReplicaSetSize">The target replica set size as a number.</param> /// <param name="minReplicaSetSize">The minimum replica set size as a number.</param> /// <param name="replicaRestartWaitDurationSeconds">The duration, in seconds, between when a replica goes down and when /// a new replica is created.</param> /// <param name="quorumLossWaitDurationSeconds">The maximum duration, in seconds, for which a partition is allowed to /// be in a state of quorum loss.</param> /// <param name="standByReplicaKeepDurationSeconds">The definition on how long StandBy replicas should be maintained /// before being removed.</param> /// <param name="servicePlacementTimeLimitSeconds">The duration for which replicas can stay InBuild before reporting /// that build is stuck.</param> /// <param name="dropSourceReplicaOnMove">Indicates whether to drop source Secondary replica even if the target replica /// has not finished build. If desired behavior is to drop it as soon as possible the value of this property is true, /// if not it is false.</param> /// <param name="replicaLifecycleDescription">Defines how replicas of this service will behave during ther /// lifecycle.</param> /// <param name="auxiliaryReplicaCount">The auxiliary replica count as a number. To use Auxiliary replicas, the /// following must be true: AuxiliaryReplicaCount < (TargetReplicaSetSize+1)/2 and TargetReplicaSetSize >=3.</param> public StatefulServiceUpdateDescription( string flags = default(string), string placementConstraints = default(string), IEnumerable <ServiceCorrelationDescription> correlationScheme = default(IEnumerable <ServiceCorrelationDescription>), IEnumerable <ServiceLoadMetricDescription> loadMetrics = default(IEnumerable <ServiceLoadMetricDescription>), IEnumerable <ServicePlacementPolicyDescription> servicePlacementPolicies = default(IEnumerable <ServicePlacementPolicyDescription>), MoveCost?defaultMoveCost = default(MoveCost?), IEnumerable <ScalingPolicyDescription> scalingPolicies = default(IEnumerable <ScalingPolicyDescription>), string serviceDnsName = default(string), NodeTagsDescription tagsForPlacement = default(NodeTagsDescription), NodeTagsDescription tagsForRunning = default(NodeTagsDescription), int?targetReplicaSetSize = default(int?), int?minReplicaSetSize = default(int?), string replicaRestartWaitDurationSeconds = default(string), string quorumLossWaitDurationSeconds = default(string), string standByReplicaKeepDurationSeconds = default(string), string servicePlacementTimeLimitSeconds = default(string), bool?dropSourceReplicaOnMove = default(bool?), ReplicaLifecycleDescription replicaLifecycleDescription = default(ReplicaLifecycleDescription), int?auxiliaryReplicaCount = default(int?)) : base( Common.ServiceKind.Stateful, flags, placementConstraints, correlationScheme, loadMetrics, servicePlacementPolicies, defaultMoveCost, scalingPolicies, serviceDnsName, tagsForPlacement, tagsForRunning) { targetReplicaSetSize?.ThrowIfLessThan("targetReplicaSetSize", 1); minReplicaSetSize?.ThrowIfLessThan("minReplicaSetSize", 1); auxiliaryReplicaCount?.ThrowIfLessThan("auxiliaryReplicaCount", 0); this.TargetReplicaSetSize = targetReplicaSetSize; this.MinReplicaSetSize = minReplicaSetSize; this.ReplicaRestartWaitDurationSeconds = replicaRestartWaitDurationSeconds; this.QuorumLossWaitDurationSeconds = quorumLossWaitDurationSeconds; this.StandByReplicaKeepDurationSeconds = standByReplicaKeepDurationSeconds; this.ServicePlacementTimeLimitSeconds = servicePlacementTimeLimitSeconds; this.DropSourceReplicaOnMove = dropSourceReplicaOnMove; this.ReplicaLifecycleDescription = replicaLifecycleDescription; this.AuxiliaryReplicaCount = auxiliaryReplicaCount; }
/// <summary> /// Initializes a new instance of the StatefulServiceDescription class. /// </summary> /// <param name="serviceName">The full name of the service with 'fabric:' URI scheme.</param> /// <param name="serviceTypeName">Name of the service type as specified in the service manifest.</param> /// <param name="partitionDescription">The partition description as an object.</param> /// <param name="targetReplicaSetSize">The target replica set size as a number.</param> /// <param name="minReplicaSetSize">The minimum replica set size as a number.</param> /// <param name="hasPersistedState">A flag indicating whether this is a persistent service which stores states on the /// local disk. If it is then the value of this property is true, if not it is false.</param> /// <param name="applicationName">The name of the application, including the 'fabric:' URI scheme.</param> /// <param name="initializationData">The initialization data as an array of bytes. Initialization data is passed to /// service instances or replicas when they are created.</param> /// <param name="placementConstraints">The placement constraints as a string. Placement constraints are boolean /// expressions on node properties and allow for restricting a service to particular nodes based on the service /// requirements. For example, to place a service on nodes where NodeType is blue specify the following: "NodeColor == /// blue)".</param> /// <param name="correlationScheme">The correlation scheme.</param> /// <param name="serviceLoadMetrics">The service load metrics.</param> /// <param name="servicePlacementPolicies">The service placement policies.</param> /// <param name="defaultMoveCost">The move cost for the service. Possible values include: 'Zero', 'Low', 'Medium', /// 'High', 'VeryHigh' /// /// Specifies the move cost for the service. /// </param> /// <param name="isDefaultMoveCostSpecified">Indicates if the DefaultMoveCost property is specified.</param> /// <param name="servicePackageActivationMode">The activation mode of service package to be used for a service. /// Possible values include: 'SharedProcess', 'ExclusiveProcess' /// /// The activation mode of service package to be used for a Service Fabric service. This is specified at the time of /// creating the Service. /// </param> /// <param name="serviceDnsName">The DNS name of the service. It requires the DNS system service to be enabled in /// Service Fabric cluster.</param> /// <param name="scalingPolicies">Scaling policies for this service.</param> /// <param name="tagsRequiredToPlace">Tags for placement of this service.</param> /// <param name="tagsRequiredToRun">Tags for running of this service.</param> /// <param name="flags">Flags indicating whether other properties are set. Each of the associated properties /// corresponds to a flag, specified below, which, if set, indicate that the property is specified. /// This property can be a combination of those flags obtained using bitwise 'OR' operator. /// For example, if the provided value is 6 then the flags for QuorumLossWaitDuration (2) and /// StandByReplicaKeepDuration(4) are set. /// /// - None - Does not indicate any other properties are set. The value is zero. /// - ReplicaRestartWaitDuration - Indicates the ReplicaRestartWaitDuration property is set. The value is 1. /// - QuorumLossWaitDuration - Indicates the QuorumLossWaitDuration property is set. The value is 2. /// - StandByReplicaKeepDuration - Indicates the StandByReplicaKeepDuration property is set. The value is 4. /// - ServicePlacementTimeLimit - Indicates the ServicePlacementTimeLimit property is set. The value is 8. /// - DropSourceReplicaOnMove - Indicates the DropSourceReplicaOnMove property is set. The value is 16. /// </param> /// <param name="replicaRestartWaitDurationSeconds">The duration, in seconds, between when a replica goes down and when /// a new replica is created.</param> /// <param name="quorumLossWaitDurationSeconds">The maximum duration, in seconds, for which a partition is allowed to /// be in a state of quorum loss.</param> /// <param name="standByReplicaKeepDurationSeconds">The definition on how long StandBy replicas should be maintained /// before being removed.</param> /// <param name="servicePlacementTimeLimitSeconds">The duration for which replicas can stay InBuild before reporting /// that build is stuck.</param> /// <param name="dropSourceReplicaOnMove">Indicates whether to drop source Secondary replica even if the target replica /// has not finished build. If desired behavior is to drop it as soon as possible the value of this property is true, /// if not it is false.</param> /// <param name="replicaLifecycleDescription">Defines how replicas of this service will behave during ther /// lifecycle.</param> /// <param name="auxiliaryReplicaCount">The auxiliary replica count as a number. To use Auxiliary replicas, the /// following must be true: AuxiliaryReplicaCount < (TargetReplicaSetSize+1)/2 and TargetReplicaSetSize >=3.</param> public StatefulServiceDescription( ServiceName serviceName, string serviceTypeName, PartitionSchemeDescription partitionDescription, int?targetReplicaSetSize, int?minReplicaSetSize, bool?hasPersistedState, ApplicationName applicationName = default(ApplicationName), byte[] initializationData = default(byte[]), string placementConstraints = default(string), IEnumerable <ServiceCorrelationDescription> correlationScheme = default(IEnumerable <ServiceCorrelationDescription>), IEnumerable <ServiceLoadMetricDescription> serviceLoadMetrics = default(IEnumerable <ServiceLoadMetricDescription>), IEnumerable <ServicePlacementPolicyDescription> servicePlacementPolicies = default(IEnumerable <ServicePlacementPolicyDescription>), MoveCost?defaultMoveCost = default(MoveCost?), bool?isDefaultMoveCostSpecified = default(bool?), ServicePackageActivationMode?servicePackageActivationMode = default(ServicePackageActivationMode?), string serviceDnsName = default(string), IEnumerable <ScalingPolicyDescription> scalingPolicies = default(IEnumerable <ScalingPolicyDescription>), NodeTagsDescription tagsRequiredToPlace = default(NodeTagsDescription), NodeTagsDescription tagsRequiredToRun = default(NodeTagsDescription), int?flags = default(int?), long?replicaRestartWaitDurationSeconds = default(long?), long?quorumLossWaitDurationSeconds = default(long?), long?standByReplicaKeepDurationSeconds = default(long?), long?servicePlacementTimeLimitSeconds = default(long?), bool?dropSourceReplicaOnMove = default(bool?), ReplicaLifecycleDescription replicaLifecycleDescription = default(ReplicaLifecycleDescription), int?auxiliaryReplicaCount = default(int?)) : base( serviceName, serviceTypeName, partitionDescription, Common.ServiceKind.Stateful, applicationName, initializationData, placementConstraints, correlationScheme, serviceLoadMetrics, servicePlacementPolicies, defaultMoveCost, isDefaultMoveCostSpecified, servicePackageActivationMode, serviceDnsName, scalingPolicies, tagsRequiredToPlace, tagsRequiredToRun) { targetReplicaSetSize.ThrowIfNull(nameof(targetReplicaSetSize)); minReplicaSetSize.ThrowIfNull(nameof(minReplicaSetSize)); hasPersistedState.ThrowIfNull(nameof(hasPersistedState)); targetReplicaSetSize?.ThrowIfLessThan("targetReplicaSetSize", 1); minReplicaSetSize?.ThrowIfLessThan("minReplicaSetSize", 1); replicaRestartWaitDurationSeconds?.ThrowIfOutOfInclusiveRange("replicaRestartWaitDurationSeconds", 0, 4294967295); quorumLossWaitDurationSeconds?.ThrowIfOutOfInclusiveRange("quorumLossWaitDurationSeconds", 0, 4294967295); standByReplicaKeepDurationSeconds?.ThrowIfOutOfInclusiveRange("standByReplicaKeepDurationSeconds", 0, 4294967295); servicePlacementTimeLimitSeconds?.ThrowIfOutOfInclusiveRange("servicePlacementTimeLimitSeconds", 0, 4294967295); auxiliaryReplicaCount?.ThrowIfLessThan("auxiliaryReplicaCount", 0); this.TargetReplicaSetSize = targetReplicaSetSize; this.MinReplicaSetSize = minReplicaSetSize; this.HasPersistedState = hasPersistedState; this.Flags = flags; this.ReplicaRestartWaitDurationSeconds = replicaRestartWaitDurationSeconds; this.QuorumLossWaitDurationSeconds = quorumLossWaitDurationSeconds; this.StandByReplicaKeepDurationSeconds = standByReplicaKeepDurationSeconds; this.ServicePlacementTimeLimitSeconds = servicePlacementTimeLimitSeconds; this.DropSourceReplicaOnMove = dropSourceReplicaOnMove; this.ReplicaLifecycleDescription = replicaLifecycleDescription; this.AuxiliaryReplicaCount = auxiliaryReplicaCount; }