/// <summary> /// Serializes the object to JSON. /// </summary> /// <param name="writer">The <see cref="T: Newtonsoft.Json.JsonWriter" /> to write to.</param> /// <param name="obj">The object to serialize to JSON.</param> internal static void Serialize(JsonWriter writer, ClusterHealthChunkQueryDescription obj) { // Required properties are always serialized, optional properties are serialized when not null. writer.WriteStartObject(); if (obj.NodeFilters != null) { writer.WriteEnumerableProperty(obj.NodeFilters, "NodeFilters", NodeHealthStateFilterConverter.Serialize); } if (obj.ApplicationFilters != null) { writer.WriteEnumerableProperty(obj.ApplicationFilters, "ApplicationFilters", ApplicationHealthStateFilterConverter.Serialize); } if (obj.ClusterHealthPolicy != null) { writer.WriteProperty(obj.ClusterHealthPolicy, "ClusterHealthPolicy", ClusterHealthPolicyConverter.Serialize); } if (obj.ApplicationHealthPolicies != null) { writer.WriteProperty(obj.ApplicationHealthPolicies, "ApplicationHealthPolicies", ApplicationHealthPoliciesConverter.Serialize); } writer.WriteEndObject(); }
/// <inheritdoc/> protected override void ProcessRecordInternal() { var clusterHealthPolicy = new ClusterHealthPolicy( considerWarningAsError: this.ConsiderWarningAsError, maxPercentUnhealthyNodes: this.MaxPercentUnhealthyNodes, maxPercentUnhealthyApplications: this.MaxPercentUnhealthyApplications, applicationTypeHealthPolicyMap: this.ApplicationTypeHealthPolicyMap, nodeTypeHealthPolicyMap: this.NodeTypeHealthPolicyMap); var applicationHealthPolicies = new ApplicationHealthPolicies( applicationHealthPolicyMap: this.ApplicationHealthPolicyMap); var clusterHealthChunkQueryDescription = new ClusterHealthChunkQueryDescription( nodeFilters: this.NodeFilters, applicationFilters: this.ApplicationFilters, clusterHealthPolicy: clusterHealthPolicy, applicationHealthPolicies: applicationHealthPolicies); var result = this.ServiceFabricClient.Cluster.GetClusterHealthChunkUsingPolicyAndAdvancedFiltersAsync( clusterHealthChunkQueryDescription: clusterHealthChunkQueryDescription, serverTimeout: this.ServerTimeout, cancellationToken: this.CancellationToken).GetAwaiter().GetResult(); if (result != null) { this.WriteObject(this.FormatOutput(result)); } }
/// <inheritdoc /> public Task <ClusterHealthChunk> GetClusterHealthChunkUsingPolicyAndAdvancedFiltersAsync( ClusterHealthChunkQueryDescription clusterHealthChunkQueryDescription = default(ClusterHealthChunkQueryDescription), long?serverTimeout = 60, CancellationToken cancellationToken = default(CancellationToken)) { serverTimeout?.ThrowIfOutOfInclusiveRange("serverTimeout", 1, 4294967295); var requestId = Guid.NewGuid().ToString(); var url = "$/GetClusterHealthChunk"; var queryParams = new List <string>(); // Append to queryParams if not null. serverTimeout?.AddToQueryParameters(queryParams, $"timeout={serverTimeout}"); queryParams.Add("api-version=6.0"); url += "?" + string.Join("&", queryParams); string content; using (var sw = new StringWriter()) { if (clusterHealthChunkQueryDescription != default(ClusterHealthChunkQueryDescription)) { ClusterHealthChunkQueryDescriptionConverter.Serialize(new JsonTextWriter(sw), clusterHealthChunkQueryDescription); } content = sw.ToString(); } HttpRequestMessage RequestFunc() { var request = new HttpRequestMessage() { Method = HttpMethod.Post, Content = new StringContent(content, Encoding.UTF8), }; request.Content.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); return(request); } return(this.httpClient.SendAsyncGetResponse(RequestFunc, url, ClusterHealthChunkConverter.Deserialize, requestId, cancellationToken)); }
public void Init() { var random = new Random((int)DateTime.Now.Ticks); // Basic types FABRIC_HEALTH_STATE_ = random.CreateRandom <HealthState>(); FABRIC_HEALTH_EVENT_ = random.CreateRandom <HealthEvent>(); // HealthEvaluation FABRIC_EVENT_HEALTH_EVALUATION_ = random.CreateRandom <EventHealthEvaluation>(); FABRIC_HEALTH_EVALUATION_ = random.CreateRandom <HealthEvaluation>(); FABRIC_REPLICA_HEALTH_EVALUATION_ = random.CreateRandom <ReplicaHealthEvaluation>(); FABRIC_REPLICAS_HEALTH_EVALUATION_ = random.CreateRandom <ReplicasHealthEvaluation>(); FABRIC_PARTITION_HEALTH_EVALUATION_ = random.CreateRandom <PartitionHealthEvaluation>(); FABRIC_PARTITIONS_HEALTH_EVALUATION_ = random.CreateRandom <PartitionsHealthEvaluation>(); FABRIC_SERVICE_HEALTH_EVALUATION_ = random.CreateRandom <ServiceHealthEvaluation>(); FABRIC_SERVICES_HEALTH_EVALUATION_ = random.CreateRandom <ServicesHealthEvaluation>(); FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH_EVALUATION_ = random.CreateRandom <DeployedServicePackageHealthEvaluation>(); FABRIC_DEPLOYED_SERVICE_PACKAGES_HEALTH_EVALUATION_ = random.CreateRandom <NodeHealthEvaluation>(); FABRIC_APPLICATION_HEALTH_EVALUATION_ = random.CreateRandom <ApplicationHealthEvaluation>(); FABRIC_SYSTEM_APPLICATION_HEALTH_EVALUATION_ = random.CreateRandom <SystemApplicationHealthEvaluation>(); FABRIC_APPLICATIONS_HEALTH_EVALUATION_ = random.CreateRandom <ApplicationsHealthEvaluation>(); FABRIC_APPLICATION_TYPE_APPLICATIONS_HEALTH_EVALUATION_ = random.CreateRandom <ApplicationTypeApplicationsHealthEvaluation>(); FABRIC_DEPLOYED_APPLICATION_HEALTH_EVALUATION_ = random.CreateRandom <DeployedApplicationHealthEvaluation>(); FABRIC_DEPLOYED_APPLICATIONS_HEALTH_EVALUATION_ = random.CreateRandom <DeployedApplicationsHealthEvaluation>(); FABRIC_UPGRADE_DOMAIN_DEPLOYED_APPLICATIONS_HEALTH_EVALUATION_ = random.CreateRandom <UpgradeDomainDeployedApplicationsHealthEvaluation>(); FABRIC_NODE_HEALTH_EVALUATION_ = random.CreateRandom <NodeHealthEvaluation>(); FABRIC_NODES_HEALTH_EVALUATION_ = random.CreateRandom <NodesHealthEvaluation>(); FABRIC_DELTA_NODES_CHECK_HEALTH_EVALUATION_ = random.CreateRandom <DeltaNodesCheckHealthEvaluation>(); FABRIC_UPGRADE_DOMAIN_NODES_HEALTH_EVALUATION_ = random.CreateRandom <UpgradeDomainNodesHealthEvaluation>(); FABRIC_UPGRADE_DOMAIN_DELTA_NODES_CHECK_HEALTH_EVALUATION_ = random.CreateRandom <UpgradeDomainDeltaNodesCheckHealthEvaluation>(); // Health FABRIC_REPLICA_HEALTH_ = random.CreateRandom <ReplicaHealth>(); FABRIC_PARTITION_HEALTH_ = random.CreateRandom <PartitionHealth>(); FABRIC_SERVICE_HEALTH_ = random.CreateRandom <ServiceHealth>(); FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH_ = random.CreateRandom <DeployedServicePackageHealth>(); FABRIC_APPLICATION_HEALTH_ = random.CreateRandom <ApplicationHealth>(); FABRIC_NODE_HEALTH_ = random.CreateRandom <NodeHealth>(); FABRIC_CLUSTER_HEALTH_ = random.CreateRandom <ClusterHealth>(); FABRIC_DEPLOYED_APPLICATION_HEALTH_ = random.CreateRandom <DeployedApplicationHealth>(); FABRIC_CLUSTER_HEALTH_POLICY_ = random.CreateRandom <ClusterHealthPolicy>(); FABRIC_CLUSTER_HEALTH_POLICY_NO_APP_TYPE_ = random.CreateRandom <ClusterHealthPolicy>(); FABRIC_CLUSTER_HEALTH_POLICY_NO_APP_TYPE_.ApplicationTypeHealthPolicyMap.Clear(); FABRIC_APPLICATION_HEALTH_POLICY_ = random.CreateRandom <ApplicationHealthPolicy>(); FABRIC_REPLICA_HEALTH_STATE_CHUNK_ = this.random.CreateRandom <ReplicaHealthStateChunk>(); FABRIC_PARTITION_HEALTH_STATE_CHUNK_ = this.random.CreateRandom <PartitionHealthStateChunk>(); FABRIC_PARTITION_HEALTH_STATE_CHUNK_.ReplicaHealthStateChunks = new ReplicaHealthStateChunkList() { FABRIC_REPLICA_HEALTH_STATE_CHUNK_ }; FABRIC_SERVICE_HEALTH_STATE_CHUNK_ = this.random.CreateRandom <ServiceHealthStateChunk>(); FABRIC_SERVICE_HEALTH_STATE_CHUNK_.PartitionHealthStateChunks = new PartitionHealthStateChunkList() { FABRIC_PARTITION_HEALTH_STATE_CHUNK_ }; FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH_STATE_CHUNK_ = this.random.CreateRandom <DeployedServicePackageHealthStateChunk>(); FABRIC_DEPLOYED_APPLICATION_HEALTH_STATE_CHUNK_ = this.random.CreateRandom <DeployedApplicationHealthStateChunk>(); FABRIC_DEPLOYED_APPLICATION_HEALTH_STATE_CHUNK_.DeployedServicePackageHealthStateChunks = new DeployedServicePackageHealthStateChunkList() { FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH_STATE_CHUNK_ }; FABRIC_APPLICATION_HEALTH_STATE_CHUNK_ = this.random.CreateRandom <ApplicationHealthStateChunk>(); FABRIC_APPLICATION_HEALTH_STATE_CHUNK_.ServiceHealthStateChunks = new ServiceHealthStateChunkList() { FABRIC_SERVICE_HEALTH_STATE_CHUNK_ }; FABRIC_APPLICATION_HEALTH_STATE_CHUNK_.DeployedApplicationHealthStateChunks = new DeployedApplicationHealthStateChunkList() { FABRIC_DEPLOYED_APPLICATION_HEALTH_STATE_CHUNK_ }; FABRIC_NODE_HEALTH_STATE_CHUNK_ = this.random.CreateRandom <NodeHealthStateChunk>(); FABRIC_CLUSTER_HEALTH_CHUNK_ = this.random.CreateRandom <ClusterHealthChunk>(); FABRIC_CLUSTER_HEALTH_CHUNK_.ApplicationHealthStateChunks = new ApplicationHealthStateChunkList() { FABRIC_APPLICATION_HEALTH_STATE_CHUNK_ }; FABRIC_CLUSTER_HEALTH_CHUNK_.NodeHealthStateChunks = new NodeHealthStateChunkList() { FABRIC_NODE_HEALTH_STATE_CHUNK_ }; FABRIC_CLUSTER_HEALTH_CHUNK_ = this.random.CreateRandom <ClusterHealthChunk>(); FABRIC_REPLICA_HEALTH_STATE_FILTER_ = this.random.CreateRandom <ReplicaHealthStateFilter>(); FABRIC_PARTITION_HEALTH_STATE_FILTER_ = this.random.CreateRandom <PartitionHealthStateFilter>(); FABRIC_PARTITION_HEALTH_STATE_FILTER_.ReplicaFilters.Add(FABRIC_REPLICA_HEALTH_STATE_FILTER_); FABRIC_SERVICE_HEALTH_STATE_FILTER_ = this.random.CreateRandom <ServiceHealthStateFilter>(); FABRIC_SERVICE_HEALTH_STATE_FILTER_.PartitionFilters.Add(FABRIC_PARTITION_HEALTH_STATE_FILTER_); FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH_STATE_FILTER_ = this.random.CreateRandom <DeployedServicePackageHealthStateFilter>(); FABRIC_DEPLOYED_APPLICATION_HEALTH_STATE_FILTER_ = this.random.CreateRandom <DeployedApplicationHealthStateFilter>(); FABRIC_DEPLOYED_APPLICATION_HEALTH_STATE_FILTER_.DeployedServicePackageFilters.Add(FABRIC_DEPLOYED_SERVICE_PACKAGE_HEALTH_STATE_FILTER_); FABRIC_APPLICATION_HEALTH_STATE_FILTER_ = this.random.CreateRandom <ApplicationHealthStateFilter>(); FABRIC_APPLICATION_HEALTH_STATE_FILTER_.ServiceFilters.Add(FABRIC_SERVICE_HEALTH_STATE_FILTER_); FABRIC_APPLICATION_HEALTH_STATE_FILTER_.DeployedApplicationFilters.Add(FABRIC_DEPLOYED_APPLICATION_HEALTH_STATE_FILTER_); FABRIC_NODE_HEALTH_STATE_FILTER_ = this.random.CreateRandom <NodeHealthStateFilter>(); FABRIC_CLUSTER_HEALTH_CHUNK_QUERY_DESCRIPTION_ = this.random.CreateRandom <ClusterHealthChunkQueryDescription>(); FABRIC_CLUSTER_HEALTH_CHUNK_QUERY_DESCRIPTION_.ApplicationFilters.Add(FABRIC_APPLICATION_HEALTH_STATE_FILTER_); FABRIC_CLUSTER_HEALTH_CHUNK_QUERY_DESCRIPTION_.NodeFilters.Add(FABRIC_NODE_HEALTH_STATE_FILTER_); }
public GetClusterHealthChunkRequest(ClusterHealthChunkQueryDescription queryDescription, IFabricClient fabricClient, TimeSpan timeout) : base(fabricClient, timeout) { ThrowIf.Null(queryDescription, "queryDescription"); this.QueryDescription = queryDescription; }
protected override void ProcessRecord() { var clusterConnection = this.GetClusterConnection(); try { var queryDescription = new ClusterHealthChunkQueryDescription(); if (this.ConsiderWarningAsError.HasValue || this.MaxPercentUnhealthyNodes.HasValue || this.MaxPercentUnhealthyApplications.HasValue || this.ApplicationTypeHealthPolicyMap != null) { queryDescription.ClusterHealthPolicy = new ClusterHealthPolicy() { ConsiderWarningAsError = this.ConsiderWarningAsError.GetValueOrDefault(), MaxPercentUnhealthyApplications = this.MaxPercentUnhealthyApplications.GetValueOrDefault(), MaxPercentUnhealthyNodes = this.MaxPercentUnhealthyNodes.GetValueOrDefault() }; if (this.ApplicationTypeHealthPolicyMap != null) { foreach (var entry in this.ApplicationTypeHealthPolicyMap) { queryDescription.ClusterHealthPolicy.ApplicationTypeHealthPolicyMap.Add(entry.Key, entry.Value); } } } if (this.ApplicationFilters != null) { foreach (var filter in this.ApplicationFilters) { queryDescription.ApplicationFilters.Add(filter); } } if (this.NodeFilters != null) { foreach (var filter in this.NodeFilters) { queryDescription.NodeFilters.Add(filter); } } if (this.ApplicationHealthPolicies != null) { foreach (var entry in this.ApplicationHealthPolicies) { queryDescription.ApplicationHealthPolicies.Add(entry.Key, entry.Value); } } var clusterHealthChunk = clusterConnection.GetClusterHealthChunkAsync( queryDescription, this.GetTimeout(), this.GetCancellationToken()).Result; this.WriteObject(this.FormatOutput(clusterHealthChunk)); } catch (AggregateException aggregateException) { aggregateException.Handle((ae) => { this.ThrowTerminatingError( ae, Constants.GetClusterHealthChunkErrorId, clusterConnection); return(true); }); } }