/// <summary> /// Initializes a new instance of the Cluster class. /// </summary> /// <param name="location">Azure resource location.</param> /// <param name="managementEndpoint">The http management endpoint of /// the cluster.</param> /// <param name="nodeTypes">The list of node types in the /// cluster.</param> /// <param name="id">Azure resource identifier.</param> /// <param name="name">Azure resource name.</param> /// <param name="type">Azure resource type.</param> /// <param name="tags">Azure resource tags.</param> /// <param name="addOnFeatures">The list of add-on features to enable /// in the cluster.</param> /// <param name="availableClusterVersions">The Service Fabric runtime /// versions available for this cluster.</param> /// <param name="azureActiveDirectory">The AAD authentication settings /// of the cluster.</param> /// <param name="certificate">The certificate to use for securing the /// cluster. The certificate provided will be used for node to node /// security within the cluster, SSL certificate for cluster management /// endpoint and default admin client.</param> /// <param name="certificateCommonNames">Describes a list of server /// certificates referenced by common name that are used to secure the /// cluster.</param> /// <param name="clientCertificateCommonNames">The list of client /// certificates referenced by common name that are allowed to manage /// the cluster.</param> /// <param name="clientCertificateThumbprints">The list of client /// certificates referenced by thumbprint that are allowed to manage /// the cluster.</param> /// <param name="clusterCodeVersion">The Service Fabric runtime version /// of the cluster. This property can only by set the user when /// **upgradeMode** is set to 'Manual'. To get list of available /// Service Fabric versions for new clusters use [ClusterVersion /// API](./ClusterVersion.md). To get the list of available version for /// existing clusters use **availableClusterVersions**.</param> /// <param name="clusterEndpoint">The Azure Resource Provider endpoint. /// A system service in the cluster connects to this endpoint.</param> /// <param name="clusterId">A service generated unique identifier for /// the cluster resource.</param> /// <param name="clusterState">The current state of the cluster. /// /// - WaitingForNodes - Indicates that the cluster resource is created /// and the resource provider is waiting for Service Fabric VM /// extension to boot up and report to it. /// - Deploying - Indicates that the Service Fabric runtime is being /// installed on the VMs. Cluster resource will be in this state until /// the cluster boots up and system services are up. /// - BaselineUpgrade - Indicates that the cluster is upgrading to /// establishes the cluster version. This upgrade is automatically /// initiated when the cluster boots up for the first time. /// - UpdatingUserConfiguration - Indicates that the cluster is being /// upgraded with the user provided configuration. /// - UpdatingUserCertificate - Indicates that the cluster is being /// upgraded with the user provided certificate. /// - UpdatingInfrastructure - Indicates that the cluster is being /// upgraded with the latest Service Fabric runtime version. This /// happens only when the **upgradeMode** is set to 'Automatic'. /// - EnforcingClusterVersion - Indicates that cluster is on a /// different version than expected and the cluster is being upgraded /// to the expected version. /// - UpgradeServiceUnreachable - Indicates that the system service in /// the cluster is no longer polling the Resource Provider. Clusters in /// this state cannot be managed by the Resource Provider. /// - AutoScale - Indicates that the ReliabilityLevel of the cluster is /// being adjusted. /// - Ready - Indicates that the cluster is in a stable state. /// . Possible values include: 'WaitingForNodes', 'Deploying', /// 'BaselineUpgrade', 'UpdatingUserConfiguration', /// 'UpdatingUserCertificate', 'UpdatingInfrastructure', /// 'EnforcingClusterVersion', 'UpgradeServiceUnreachable', /// 'AutoScale', 'Ready'</param> /// <param name="diagnosticsStorageAccountConfig">The storage account /// information for storing Service Fabric diagnostic logs.</param> /// <param name="fabricSettings">The list of custom fabric settings to /// configure the cluster.</param> /// <param name="provisioningState">The provisioning state of the /// cluster resource. Possible values include: 'Updating', 'Succeeded', /// 'Failed', 'Canceled'</param> /// <param name="reliabilityLevel">The reliability level sets the /// replica set size of system services. Learn about /// [ReliabilityLevel](https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-cluster-capacity). /// /// - None - Run the System services with a target replica set count of /// 1. This should only be used for test clusters. /// - Bronze - Run the System services with a target replica set count /// of 3. This should only be used for test clusters. /// - Silver - Run the System services with a target replica set count /// of 5. /// - Gold - Run the System services with a target replica set count of /// 7. /// - Platinum - Run the System services with a target replica set /// count of 9. /// . Possible values include: 'None', 'Bronze', 'Silver', 'Gold', /// 'Platinum'</param> /// <param name="reverseProxyCertificate">The server certificate used /// by reverse proxy.</param> /// <param name="reverseProxyCertificateCommonNames">Describes a list /// of server certificates referenced by common name that are used to /// secure the cluster.</param> /// <param name="upgradeDescription">The policy to use when upgrading /// the cluster.</param> /// <param name="upgradeMode">The upgrade mode of the cluster when new /// Service Fabric runtime version is available. /// /// - Automatic - The cluster will be automatically upgraded to the /// latest Service Fabric runtime version as soon as it is available. /// - Manual - The cluster will not be automatically upgraded to the /// latest Service Fabric runtime version. The cluster is upgraded by /// setting the **clusterCodeVersion** property in the cluster /// resource. /// . Possible values include: 'Automatic', 'Manual'</param> /// <param name="vmImage">The VM image VMSS has been configured with. /// Generic names such as Windows or Linux can be used.</param> public Cluster(string location, string managementEndpoint, IList <NodeTypeDescription> nodeTypes, string id = default(string), string name = default(string), string type = default(string), IDictionary <string, string> tags = default(IDictionary <string, string>), IList <string> addOnFeatures = default(IList <string>), IList <ClusterVersionDetails> availableClusterVersions = default(IList <ClusterVersionDetails>), AzureActiveDirectory azureActiveDirectory = default(AzureActiveDirectory), CertificateDescription certificate = default(CertificateDescription), ServerCertificateCommonNames certificateCommonNames = default(ServerCertificateCommonNames), IList <ClientCertificateCommonName> clientCertificateCommonNames = default(IList <ClientCertificateCommonName>), IList <ClientCertificateThumbprint> clientCertificateThumbprints = default(IList <ClientCertificateThumbprint>), string clusterCodeVersion = default(string), string clusterEndpoint = default(string), string clusterId = default(string), string clusterState = default(string), DiagnosticsStorageAccountConfig diagnosticsStorageAccountConfig = default(DiagnosticsStorageAccountConfig), IList <SettingsSectionDescription> fabricSettings = default(IList <SettingsSectionDescription>), string provisioningState = default(string), string reliabilityLevel = default(string), CertificateDescription reverseProxyCertificate = default(CertificateDescription), ServerCertificateCommonNames reverseProxyCertificateCommonNames = default(ServerCertificateCommonNames), ClusterUpgradePolicy upgradeDescription = default(ClusterUpgradePolicy), string upgradeMode = default(string), string vmImage = default(string)) : base(location, id, name, type, tags) { AddOnFeatures = addOnFeatures; AvailableClusterVersions = availableClusterVersions; AzureActiveDirectory = azureActiveDirectory; Certificate = certificate; CertificateCommonNames = certificateCommonNames; ClientCertificateCommonNames = clientCertificateCommonNames; ClientCertificateThumbprints = clientCertificateThumbprints; ClusterCodeVersion = clusterCodeVersion; ClusterEndpoint = clusterEndpoint; ClusterId = clusterId; ClusterState = clusterState; DiagnosticsStorageAccountConfig = diagnosticsStorageAccountConfig; FabricSettings = fabricSettings; ManagementEndpoint = managementEndpoint; NodeTypes = nodeTypes; ProvisioningState = provisioningState; ReliabilityLevel = reliabilityLevel; ReverseProxyCertificate = reverseProxyCertificate; ReverseProxyCertificateCommonNames = reverseProxyCertificateCommonNames; UpgradeDescription = upgradeDescription; UpgradeMode = upgradeMode; VmImage = vmImage; CustomInit(); }
/// <summary> /// Validate the object. /// </summary> /// <exception cref="ValidationException"> /// Thrown if validation fails /// </exception> public override void Validate() { base.Validate(); if (ManagementEndpoint == null) { throw new ValidationException(ValidationRules.CannotBeNull, "ManagementEndpoint"); } if (NodeTypes == null) { throw new ValidationException(ValidationRules.CannotBeNull, "NodeTypes"); } if (Certificate != null) { Certificate.Validate(); } if (ClientCertificateCommonNames != null) { foreach (var element in ClientCertificateCommonNames) { if (element != null) { element.Validate(); } } } if (ClientCertificateThumbprints != null) { foreach (var element1 in ClientCertificateThumbprints) { if (element1 != null) { element1.Validate(); } } } if (DiagnosticsStorageAccountConfig != null) { DiagnosticsStorageAccountConfig.Validate(); } if (FabricSettings != null) { foreach (var element2 in FabricSettings) { if (element2 != null) { element2.Validate(); } } } if (NodeTypes != null) { foreach (var element3 in NodeTypes) { if (element3 != null) { element3.Validate(); } } } if (ReverseProxyCertificate != null) { ReverseProxyCertificate.Validate(); } if (UpgradeDescription != null) { UpgradeDescription.Validate(); } }