private void GetResultsWithPagedQuery(IClusterConnection clusterConnection) { var queryDescription = new ApplicationQueryDescription(); queryDescription.ExcludeApplicationParameters = this.ExcludeApplicationParameters; if (this.MaxResults.HasValue) { queryDescription.MaxResults = this.MaxResults.Value; } if (!string.IsNullOrEmpty(this.ApplicationTypeName)) { queryDescription.ApplicationTypeNameFilter = this.ApplicationTypeName; } if ((this.ApplicationName != null) && (!string.IsNullOrEmpty(this.ApplicationName.OriginalString))) { queryDescription.ApplicationNameFilter = this.ApplicationName; } if (!string.IsNullOrEmpty(this.ContinuationToken)) { queryDescription.ContinuationToken = this.ContinuationToken; } if (this.ApplicationDefinitionKindFilter.HasValue) { queryDescription.ApplicationDefinitionKindFilter = this.ApplicationDefinitionKindFilter.Value; } var queryResult = clusterConnection.GetApplicationPagedListAsync( queryDescription, this.GetTimeout(), this.GetCancellationToken()).Result; // Continuation token is not added as a PsObject because it breaks the pipeline scenarios // like Get-ServiceFabricNode | Get-ServiceFabricNodeHealth this.WriteObject(this.FormatOutput(queryResult)); // If the user selects the "Verbose" option, then print the continuation token this.WriteVerbose("Continuation Token: " + queryResult.ContinuationToken); }
private void GetAllQueryResultPages(IClusterConnection clusterConnection) { // If the results do not fit a message, the continuation token is set. // Keep getting data until all entries are received. bool morePages = true; string currentContinuationToken = null; currentContinuationToken = this.ContinuationToken; var queryDescription = new ApplicationQueryDescription() { ApplicationNameFilter = this.ApplicationName, ApplicationTypeNameFilter = this.ApplicationTypeName, ContinuationToken = currentContinuationToken, ExcludeApplicationParameters = this.ExcludeApplicationParameters }; if (this.ApplicationDefinitionKindFilter.HasValue) { queryDescription.ApplicationDefinitionKindFilter = this.ApplicationDefinitionKindFilter.Value; } while (morePages) { var queryResult = clusterConnection.GetApplicationPagedListAsync( queryDescription, this.GetTimeout(), this.GetCancellationToken()).Result; foreach (var item in queryResult) { this.WriteObject(this.FormatOutput(item)); } morePages = Helpers.ResultHasMorePages(this, queryResult.ContinuationToken, out currentContinuationToken); // Update continuation token queryDescription.ContinuationToken = currentContinuationToken; } }