// Returns a query description object based on user input. // Including max results is optional, since we don't want to set this value for get all pages together option (the default, not GetSinglePage) private NodeQueryDescription GetQueryDescription(bool includeMaxResults) { var queryDescription = new NodeQueryDescription(); if (!string.IsNullOrEmpty(this.ContinuationToken)) { queryDescription.ContinuationToken = this.ContinuationToken; } var nodeStatusFilter = NodeStatusFilter.Default; if (this.StatusFilter.HasValue) { nodeStatusFilter = this.StatusFilter.Value; } queryDescription.NodeStatusFilter = nodeStatusFilter; if (!string.IsNullOrEmpty(this.NodeName)) { queryDescription.NodeNameFilter = this.NodeName; } if (this.MaxResults.HasValue && includeMaxResults) { queryDescription.MaxResults = this.MaxResults.Value; } return(queryDescription); }
private async Task <IList <Node> > GetNodesToRemoveAsync( FabricClient client, CancellationToken cancellationToken) { var nodesToRemove = new List <Node>(); var queryDescription = new NodeQueryDescription(); queryDescription.ContinuationToken = null; do { var nodeList = await client.QueryManager.GetNodePagedListAsync( queryDescription, this.nodeManagerSettings.ClientOperationTimeout, cancellationToken); foreach (var node in nodeList) { if (IsMyType(node)) { // do not remove the nodes where this service is running continue; } if (node.NodeStatus == NodeStatus.Down) { // is down long enough if (IsDownLongEnough(node)) { nodesToRemove.Add(node); } } } queryDescription.ContinuationToken = nodeList.ContinuationToken; } while (queryDescription.ContinuationToken != null); return(nodesToRemove); }
private async Task <IList <Node> > GetNodesToRemoveAsync( FabricClient client, CancellationToken cancellationToken) { var nodesToRemove = new List <Node>(); var queryDescription = new NodeQueryDescription(); queryDescription.ContinuationToken = null; var nodeTypesToManage = this.nodeManagerSettings.NodeTypesToManage.Split(',').ToList(); nodeTypesToManage = nodeTypesToManage.Select(nodeType => nodeType.Trim()).ToList(); do { var nodeList = await client.QueryManager.GetNodePagedListAsync( queryDescription, this.nodeManagerSettings.ClientOperationTimeout, cancellationToken); foreach (var node in nodeList) { if (node.NodeStatus == NodeStatus.Down && nodeTypesToManage.Contains(node.NodeType, StringComparer.InvariantCultureIgnoreCase)) { // is down long enough if (IsDownLongEnough(node)) { nodesToRemove.Add(node); } } } queryDescription.ContinuationToken = nodeList.ContinuationToken; } while (queryDescription.ContinuationToken != null); return(nodesToRemove); }
public GetNodeListRequest(NodeQueryDescription queryDescription, IFabricClient fabricClient, TimeSpan timeout) : base(fabricClient, timeout) { this.QueryDescription = queryDescription; }