public static async Task <Operation> PollUntilCompletedAsync(this Operation operation, string projectId, string zone) { ZoneOperationsClient operationClient = await ZoneOperationsClient.CreateAsync(); GetZoneOperationRequest pollRequest = new GetZoneOperationRequest { Operation = operation.Name, Zone = zone, Project = projectId, }; TimeSpan timeOut = TimeSpan.FromMinutes(3); TimeSpan pollInterval = TimeSpan.FromSeconds(15); DateTime deadline = DateTime.UtcNow + timeOut; while (operation.Status != Operation.Types.Status.Done) { operation = await operationClient.GetAsync(pollRequest); if (operation.Status == Operation.Types.Status.Done) { break; } if (DateTime.UtcNow + pollInterval > deadline) { throw new InvalidOperationException("Timeout hit while polling for the status of the operation."); } await Task.Delay(pollInterval); } return(operation); }
/// <summary>Snippet for ListAsync</summary> public async Task ListRequestObjectAsync() { // Snippet: ListAsync(ListZoneOperationsRequest, CallSettings) // Create client ZoneOperationsClient zoneOperationsClient = await ZoneOperationsClient.CreateAsync(); // Initialize request argument(s) ListZoneOperationsRequest request = new ListZoneOperationsRequest { Zone = "", OrderBy = "", Project = "", Filter = "", ReturnPartialSuccess = false, }; // Make the request PagedAsyncEnumerable <OperationList, Operation> response = zoneOperationsClient.ListAsync(request); // Iterate over all response items, lazily performing RPCs as required await response.ForEachAsync((Operation item) => { // Do something with each item Console.WriteLine(item); }); // Or iterate over pages (of server-defined size), performing one RPC per page await response.AsRawResponses().ForEachAsync((OperationList page) => { // Do something with each page of items Console.WriteLine("A page of results:"); foreach (Operation item in page) { // Do something with each item Console.WriteLine(item); } }); // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required int pageSize = 10; Page <Operation> singlePage = await response.ReadPageAsync(pageSize); // Do something with the page of items Console.WriteLine($"A page of {pageSize} results (unless it's the final page):"); foreach (Operation item in singlePage) { // Do something with each item Console.WriteLine(item); } // Store the pageToken, for when the next page is required. string nextPageToken = singlePage.NextPageToken; // End snippet }
public static async Task <Operation> PollUntilCompletedAsync(this Operation operation, string projectId, string zone) { ZoneOperationsClient operationsClient = await ZoneOperationsClient.CreateAsync(); GetZoneOperationRequest pollRequest = new GetZoneOperationRequest { Operation = operation.Name, Zone = zone, Project = projectId, }; async Task <Operation> Poller() => await operationsClient.GetAsync(pollRequest); return(await operation.PollUntilCompletedAsync(Poller)); }
/// <summary>Snippet for ListAsync</summary> public async Task ListAsync() { // Snippet: ListAsync(string, string, CallSettings) // Additional: ListAsync(string, string, CancellationToken) // Create client ZoneOperationsClient zoneOperationsClient = await ZoneOperationsClient.CreateAsync(); // Initialize request argument(s) string project = ""; string zone = ""; // Make the request OperationList response = await zoneOperationsClient.ListAsync(project, zone); // End snippet }
/// <summary>Snippet for DeleteAsync</summary> public async Task DeleteRequestObjectAsync() { // Snippet: DeleteAsync(DeleteZoneOperationRequest, CallSettings) // Additional: DeleteAsync(DeleteZoneOperationRequest, CancellationToken) // Create client ZoneOperationsClient zoneOperationsClient = await ZoneOperationsClient.CreateAsync(); // Initialize request argument(s) DeleteZoneOperationRequest request = new DeleteZoneOperationRequest { Zone = "", Operation = "", Project = "", }; // Make the request DeleteZoneOperationResponse response = await zoneOperationsClient.DeleteAsync(request); // End snippet }
/// <summary>Snippet for ListAsync</summary> public async Task ListRequestObjectAsync() { // Snippet: ListAsync(ListZoneOperationsRequest, CallSettings) // Additional: ListAsync(ListZoneOperationsRequest, CancellationToken) // Create client ZoneOperationsClient zoneOperationsClient = await ZoneOperationsClient.CreateAsync(); // Initialize request argument(s) ListZoneOperationsRequest request = new ListZoneOperationsRequest { Zone = "", PageToken = "", MaxResults = 0U, OrderBy = "", Project = "", Filter = "", ReturnPartialSuccess = false, }; // Make the request OperationList response = await zoneOperationsClient.ListAsync(request); // End snippet }