コード例 #1
0
    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);
    }
コード例 #2
0
 /// <summary>Snippet for List</summary>
 public void List()
 {
     // Snippet: List(string, string, CallSettings)
     // Create client
     ZoneOperationsClient zoneOperationsClient = ZoneOperationsClient.Create();
     // Initialize request argument(s)
     string project = "";
     string zone    = "";
     // Make the request
     OperationList response = zoneOperationsClient.List(project, zone);
     // End snippet
 }
コード例 #3
0
        /// <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
        }
コード例 #4
0
 /// <summary>Snippet for Delete</summary>
 public void Delete()
 {
     // Snippet: Delete(string, string, string, CallSettings)
     // Create client
     ZoneOperationsClient zoneOperationsClient = ZoneOperationsClient.Create();
     // Initialize request argument(s)
     string project   = "";
     string zone      = "";
     string operation = "";
     // Make the request
     DeleteZoneOperationResponse response = zoneOperationsClient.Delete(project, zone, operation);
     // End snippet
 }
コード例 #5
0
    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));
    }
コード例 #6
0
        /// <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
        }
コード例 #7
0
 /// <summary>Snippet for Get</summary>
 public void GetRequestObject()
 {
     // Snippet: Get(GetZoneOperationRequest, CallSettings)
     // Create client
     ZoneOperationsClient zoneOperationsClient = ZoneOperationsClient.Create();
     // Initialize request argument(s)
     GetZoneOperationRequest request = new GetZoneOperationRequest
     {
         Zone      = "",
         Operation = "",
         Project   = "",
     };
     // Make the request
     Operation response = zoneOperationsClient.Get(request);
     // End snippet
 }
コード例 #8
0
 /// <summary>Snippet for Delete</summary>
 public void DeleteRequestObject()
 {
     // Snippet: Delete(DeleteZoneOperationRequest, CallSettings)
     // Create client
     ZoneOperationsClient zoneOperationsClient = ZoneOperationsClient.Create();
     // Initialize request argument(s)
     DeleteZoneOperationRequest request = new DeleteZoneOperationRequest
     {
         Zone      = "",
         Operation = "",
         Project   = "",
     };
     // Make the request
     DeleteZoneOperationResponse response = zoneOperationsClient.Delete(request);
     // End snippet
 }
コード例 #9
0
        /// <summary>Snippet for List</summary>
        public void List()
        {
            // Snippet: List(string, string, string, int?, CallSettings)
            // Create client
            ZoneOperationsClient zoneOperationsClient = ZoneOperationsClient.Create();
            // Initialize request argument(s)
            string project = "";
            string zone    = "";
            // Make the request
            PagedEnumerable <OperationList, Operation> response = zoneOperationsClient.List(project, zone);

            // Iterate over all response items, lazily performing RPCs as required
            foreach (Operation item in response)
            {
                // Do something with each item
                Console.WriteLine(item);
            }

            // Or iterate over pages (of server-defined size), performing one RPC per page
            foreach (OperationList page in response.AsRawResponses())
            {
                // 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 = response.ReadPage(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
        }
コード例 #10
0
        /// <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
        }
コード例 #11
0
 /// <summary>Snippet for List</summary>
 public void ListRequestObject()
 {
     // Snippet: List(ListZoneOperationsRequest, CallSettings)
     // Create client
     ZoneOperationsClient zoneOperationsClient = ZoneOperationsClient.Create();
     // Initialize request argument(s)
     ListZoneOperationsRequest request = new ListZoneOperationsRequest
     {
         Zone                 = "",
         PageToken            = "",
         MaxResults           = 0U,
         OrderBy              = "",
         Project              = "",
         Filter               = "",
         ReturnPartialSuccess = false,
     };
     // Make the request
     OperationList response = zoneOperationsClient.List(request);
     // End snippet
 }
コード例 #12
0
        /// <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
        }
コード例 #13
0
 private Func <Operation> CreatePoller(Operation operation)
 {
     if (operation.HasRegion && !operation.HasZone)
     {
         RegionOperationsClient    client  = RegionOperationsClient.Create();
         GetRegionOperationRequest request = new GetRegionOperationRequest
         {
             Operation = operation.Name,
             Region    = Region,
             Project   = ProjectId,
         };
         return(() => client.Get(request));
     }
     else if (operation.HasZone && !operation.HasRegion)
     {
         ZoneOperationsClient    client  = ZoneOperationsClient.Create();
         GetZoneOperationRequest request = new GetZoneOperationRequest
         {
             Operation = operation.Name,
             Zone      = Zone,
             Project   = ProjectId,
         };
         return(() => client.Get(request));
     }
     else if (!operation.HasZone && !operation.HasRegion)
     {
         GlobalOperationsClient    client  = GlobalOperationsClient.Create();
         GetGlobalOperationRequest request = new GetGlobalOperationRequest
         {
             Operation = operation.Name,
             Project   = ProjectId,
         };
         return(() => client.Get(request));
     }
     throw new ArgumentException($"Unable to determine operation type for {operation}");
 }