View reservations or future reservation requests


This document explains how to view your reservations or future reservation requests. To learn more about the different types of reservations, see Choose a reservation type .

When you view your reservations or future reservation requests, you can do the following:

  • View reservation settings. This review helps you verify the details of your reservations, ensure that they meet your needs, and plan for capacity.

  • Determine the number of consumable instances. This check helps you determine how many Compute Engine instances can consume your reserved capacity.

Limitations

You can only view a shared reservation or shared future reservation request in the project where you created it.

Before you begin

  • If you haven't already, set up authentication . Authentication verifies your identity for access to Google Cloud services and APIs. To run code or samples from a local development environment, you can authenticate to Compute Engine by selecting one of the following options:

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:

      gcloud  
      init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity .

    2. Set a default region and zone .

    Go

    To use the Go samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.

      Install the Google Cloud CLI.

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity .

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud  
      auth  
      application-default  
      login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity .

    For more information, see Set up authentication for a local development environment .

    Java

    To use the Java samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.

      Install the Google Cloud CLI.

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity .

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud  
      auth  
      application-default  
      login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity .

    For more information, see Set up authentication for a local development environment .

    Node.js

    To use the Node.js samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.

      Install the Google Cloud CLI.

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity .

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud  
      auth  
      application-default  
      login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity .

    For more information, see Set up authentication for a local development environment .

    Python

    To use the Python samples on this page in a local development environment, install and initialize the gcloud CLI, and then set up Application Default Credentials with your user credentials.

      Install the Google Cloud CLI.

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity .

      If you're using a local shell, then create local authentication credentials for your user account:

      gcloud  
      auth  
      application-default  
      login

      You don't need to do this if you're using Cloud Shell.

      If an authentication error is returned, and you are using an external identity provider (IdP), confirm that you have signed in to the gcloud CLI with your federated identity .

    For more information, see Set up authentication for a local development environment .

    REST

    To use the REST API samples on this page in a local development environment, you use the credentials you provide to the gcloud CLI.

      Install the Google Cloud CLI.

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity .

    For more information, see Authenticate for using REST in the Google Cloud authentication documentation.

Required roles

To get the permissions that you need to view reservations or future reservation requests, ask your administrator to grant you the Compute Admin ( roles/compute.admin ) IAM role on the project. For more information about granting roles, see Manage access to projects, folders, and organizations .

This predefined role contains the permissions required to view reservations or future reservation requests. To see the exact permissions that are required, expand the Required permissionssection:

Required permissions

The following permissions are required to view reservations or future reservation requests:

  • To view a list of reservations: compute.reservations.list on the project
  • To view a list of future reservation requests: compute.futureReservations.list on the project
  • To view the details of a reservation: compute.reservations.get on the project
  • To view the details of a future reservation request: compute.futureReservations.get on the project

You might also be able to get these permissions with custom roles or other predefined roles .

View reservation settings

The following sections explain how to view the settings of your reservations or future reservation requests.

View reservations

To view the settings of one or more reservations, use one of the following methods described in this section:

  • To view an overview of all reservations in your project, view a list of your reservations.

  • To view the full details of a single reservation, view the details of the reservation.

To view the deleteAtTime and reservationSharingPolicy fields ( Preview ) in a reservation, view the details of a reservation using the Google Cloud CLI, or view reservations using the REST API. If you don't require these fields, then view reservations by selecting any of the following options:

Console

  1. In the Google Cloud console, go to the Reservationspage.

    Go to Reservations

    On the On-demand reservationstab (default), the table lists each reservation, and each table column describes a property.

  2. Optional: In the On-demand reservationstable, do one or both of the following:

    • To display the assured count of your reservations, click Column display options..., select the Assured countcheckbox, and then click OK.

    • To refine your list of reservations, in the Filterfield, select the properties that you want to filter the reservations by.

  3. To view the details of a reservation, in the Namecolumn, click the name of the reservation. A page that gives the details of the reservation opens.

gcloud

  • To view a list of your reservations, use the gcloud compute reservations list command :

     gcloud compute reservations list 
    

    The output is similar to the following example:

     NAME: r-01
    IN_USE_COUNT: 0
    COUNT: 5
    ZONE: us-central1-a
    SHARE_TYPE: LOCAL
    
    NAME: r-02
    IN_USE_COUNT: 3
    COUNT: 10
    ZONE: us-central1-f
    SHARE_TYPE: LOCAL 
    

    Optionally, to refine a list of reservations using a filter expression , include the --filter flag:

     gcloud compute reservations list \
        --filter=" FILTER_EXPRESSION 
    " 
    

    Replace FILTER_EXPRESSION with a filter expression.

  • To view the details of a reservation, use the gcloud compute reservations describe command :

     gcloud compute reservations describe RESERVATION_NAME 
    \
        --zone= ZONE 
     
    

    Replace the following:

    • RESERVATION_NAME : the name of an existing reservation.

    • ZONE : the zone where the reservation exists.

    The output is similar to the following example:

     creationTimestamp: '2024-10-11T03:25:23.192-07:00'
    id: '4488228526648280060'
    kind: compute#reservation
    name: r-01
    selfLink: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/r-01
    shareSettings:
      shareType: LOCAL
    specificReservation:
      assuredCount: '50'
      count: '50'
      inUseCount: '25'
      instanceProperties:
        machineType: n2-standard-2
    specificReservationRequired: false
    status: READY
    zone: https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a 
    

Go

  • To view a list of your reservations, use the following code sample:

      // Copyright 2024 Google LLC 
     // 
     // Licensed under the Apache License, Version 2.0 (the "License"); 
     // you may not use this file except in compliance with the License. 
     // You may obtain a copy of the License at 
     // 
     //     https://www.apache.org/licenses/LICENSE-2.0 
     // 
     // Unless required by applicable law or agreed to in writing, software 
     // distributed under the License is distributed on an "AS IS" BASIS, 
     // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     // See the License for the specific language governing permissions and 
     // limitations under the License. 
     package 
      
     snippets 
     import 
      
     ( 
      
     "context" 
      
     "fmt" 
      
     "io" 
      
     compute 
      
     "cloud.google.com/go/compute/apiv1" 
      
     computepb 
      
     "cloud.google.com/go/compute/apiv1/computepb" 
      
     "google.golang.org/api/iterator" 
     ) 
     // Get list of reservations for given project in particular zone 
     func 
      
     listReservations 
     ( 
     w 
      
     io 
     . 
     Writer 
     , 
      
     projectID 
     , 
      
     zone 
      
     string 
     ) 
      
     error 
      
     { 
      
     // projectID := "your_project_id" 
      
     // zone := "us-west3-a" 
      
     ctx 
      
     := 
      
     context 
     . 
     Background 
     () 
      
     reservationsClient 
     , 
      
     err 
      
     := 
      
     compute 
     . 
      NewReservationsRESTClient 
     
     ( 
     ctx 
     ) 
      
     if 
      
     err 
      
     != 
      
     nil 
      
     { 
      
     return 
      
     err 
      
     } 
      
     defer 
      
     reservationsClient 
     . 
     Close 
     () 
      
     req 
      
     := 
      
    & computepb 
     . 
     ListReservationsRequest 
     { 
      
     Project 
     : 
      
     projectID 
     , 
      
     Zone 
     : 
      
     zone 
     , 
      
     } 
      
     it 
      
     := 
      
     reservationsClient 
     . 
     List 
     ( 
     ctx 
     , 
      
     req 
     ) 
      
     fmt 
     . 
     Fprintf 
     ( 
     w 
     , 
      
     "Instances found in zone %s:\n" 
     , 
      
     zone 
     ) 
      
     for 
      
     { 
      
     instance 
     , 
      
     err 
      
     := 
      
     it 
     . 
     Next 
     () 
      
     if 
      
     err 
      
     == 
      
     iterator 
     . 
      Done 
     
      
     { 
      
     break 
      
     } 
      
     if 
      
     err 
      
     != 
      
     nil 
      
     { 
      
     return 
      
     err 
      
     } 
      
     fmt 
     . 
     Fprintf 
     ( 
     w 
     , 
      
     "- %s %d\n" 
     , 
      
     instance 
     . 
     GetName 
     (), 
      
     instance 
     . 
     GetSpecificReservation 
     (). 
     GetCount 
     ()) 
      
     } 
      
     return 
      
     nil 
     } 
     
    
  • To view the details of a reservation, use the following code sample:

      // Copyright 2024 Google LLC 
     // 
     // Licensed under the Apache License, Version 2.0 (the "License"); 
     // you may not use this file except in compliance with the License. 
     // You may obtain a copy of the License at 
     // 
     //     https://www.apache.org/licenses/LICENSE-2.0 
     // 
     // Unless required by applicable law or agreed to in writing, software 
     // distributed under the License is distributed on an "AS IS" BASIS, 
     // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     // See the License for the specific language governing permissions and 
     // limitations under the License. 
     package 
      
     snippets 
     import 
      
     ( 
      
     "context" 
      
     "fmt" 
      
     "io" 
      
     compute 
      
     "cloud.google.com/go/compute/apiv1" 
      
     computepb 
      
     "cloud.google.com/go/compute/apiv1/computepb" 
     ) 
     // Get certain reservation for given project and zone 
     func 
      
     getReservation 
     ( 
     w 
      
     io 
     . 
     Writer 
     , 
      
     projectID 
     , 
      
     zone 
     , 
      
     reservationName 
      
     string 
     ) 
      
     ( 
     * 
     computepb 
     . 
     Reservation 
     , 
      
     error 
     ) 
      
     { 
      
     // projectID := "your_project_id" 
      
     // zone := "us-west3-a" 
      
     // reservationName := "your_reservation_name" 
      
     ctx 
      
     := 
      
     context 
     . 
     Background 
     () 
      
     reservationsClient 
     , 
      
     err 
      
     := 
      
     compute 
     . 
      NewReservationsRESTClient 
     
     ( 
     ctx 
     ) 
      
     if 
      
     err 
      
     != 
      
     nil 
      
     { 
      
     return 
      
     nil 
     , 
      
     err 
      
     } 
      
     defer 
      
     reservationsClient 
     . 
     Close 
     () 
      
     req 
      
     := 
      
    & computepb 
     . 
     GetReservationRequest 
     { 
      
     Project 
     : 
      
     projectID 
     , 
      
     Reservation 
     : 
      
     reservationName 
     , 
      
     Zone 
     : 
      
     zone 
     , 
      
     } 
      
     reservation 
     , 
      
     err 
      
     := 
      
     reservationsClient 
     . 
     Get 
     ( 
     ctx 
     , 
      
     req 
     ) 
      
     if 
      
     err 
      
     != 
      
     nil 
      
     { 
      
     return 
      
     nil 
     , 
      
     fmt 
     . 
     Errorf 
     ( 
     "unable to delete reservation: %w" 
     , 
      
     err 
     ) 
      
     } 
      
     fmt 
     . 
     Fprintf 
     ( 
     w 
     , 
      
     "Reservation: %s\n" 
     , 
      
     reservation 
     . 
     GetName 
     ()) 
      
     return 
      
     reservation 
     , 
      
     nil 
     } 
     
    

Java

  • To view a list of your reservations, use the following code sample:

      /* 
     * Copyright 2024 Google LLC 
     * 
     * Licensed under the Apache License, Version 2.0 (the "License"); 
     * you may not use this file except in compliance with the License. 
     * You may obtain a copy of the License at 
     * 
     *   http://www.apache.org/licenses/LICENSE-2.0 
     * 
     * Unless required by applicable law or agreed to in writing, software 
     * distributed under the License is distributed on an "AS IS" BASIS, 
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     * See the License for the specific language governing permissions and 
     * limitations under the License. 
     */ 
     package 
      
     compute.reservation 
     ; 
     import 
      
     com.google.cloud.compute.v1. Reservation 
     
     ; 
     import 
      
     com.google.cloud.compute.v1. ReservationsClient 
     
     ; 
     import 
      
     java.io.IOException 
     ; 
     import 
      
     java.util.ArrayList 
     ; 
     import 
      
     java.util.List 
     ; 
     public 
      
     class 
     ListReservations 
      
     { 
      
     public 
      
     static 
      
     void 
      
     main 
     ( 
     String 
     [] 
      
     args 
     ) 
      
     throws 
      
     IOException 
      
     { 
      
     // TODO(developer): Replace these variables before running the sample. 
      
     // Project ID or project number of the Cloud project you want to use. 
      
     String 
      
     project 
      
     = 
      
     "YOUR_PROJECT_ID" 
     ; 
      
     // Zone in which reservations are located. 
      
     String 
      
     zone 
      
     = 
      
     "us-central1-a" 
     ; 
      
     listReservations 
     ( 
     project 
     , 
      
     zone 
     ); 
      
     } 
      
     // List all reservations in the given project and zone. 
      
     public 
      
     static 
      
     List<Reservation> 
      
     listReservations 
     ( 
     String 
      
     project 
     , 
      
     String 
      
     zone 
     ) 
      
     throws 
      
     IOException 
      
     { 
      
     // Initialize client that will be used to send requests. This client only needs to be created 
      
     // once, and can be reused for multiple requests. 
      
     List<Reservation> 
      
     listOfReservations 
      
     = 
      
     new 
      
     ArrayList 
    <> (); 
      
     try 
      
     ( 
      ReservationsClient 
     
      
     reservationsClient 
      
     = 
      
      ReservationsClient 
     
     . 
     create 
     ()) 
      
     { 
      
     for 
      
     ( 
      Reservation 
     
      
     reservation 
      
     : 
      
     reservationsClient 
     . 
     list 
     ( 
     project 
     , 
      
     zone 
     ). 
     iterateAll 
     ()) 
      
     { 
      
     listOfReservations 
     . 
     add 
     ( 
     reservation 
     ); 
      
     System 
     . 
     out 
     . 
     println 
     ( 
     "Reservation: " 
      
     + 
      
     reservation 
     . 
     getName 
     ()); 
      
     } 
      
     } 
      
     return 
      
     listOfReservations 
     ; 
      
     } 
     } 
     
    
  • To view the details of a reservation, use the following code sample:

      /* 
     * Copyright 2024 Google LLC 
     * 
     * Licensed under the Apache License, Version 2.0 (the "License"); 
     * you may not use this file except in compliance with the License. 
     * You may obtain a copy of the License at 
     * 
     * http://www.apache.org/licenses/LICENSE-2.0 
     * 
     * Unless required by applicable law or agreed to in writing, software 
     * distributed under the License is distributed on an "AS IS" BASIS, 
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     * See the License for the specific language governing permissions and 
     * limitations under the License. 
     */ 
     package 
      
     compute.reservation 
     ; 
     import 
      
     com.google.cloud.compute.v1. Reservation 
     
     ; 
     import 
      
     com.google.cloud.compute.v1. ReservationsClient 
     
     ; 
     import 
      
     java.io.IOException 
     ; 
     import 
      
     java.util.concurrent.ExecutionException 
     ; 
     import 
      
     java.util.concurrent.TimeoutException 
     ; 
     public 
      
     class 
     GetReservation 
      
     { 
      
     public 
      
     static 
      
     void 
      
     main 
     ( 
     String 
     [] 
      
     args 
     ) 
      
     throws 
      
     IOException 
     , 
      
     ExecutionException 
     , 
      
     InterruptedException 
     , 
      
     TimeoutException 
      
     { 
      
     // TODO(developer): Replace these variables before running the sample. 
      
     // Project ID or project number of the Cloud project you want to use. 
      
     String 
      
     projectId 
      
     = 
      
     "YOUR_PROJECT_ID" 
     ; 
      
     // Name of the zone in which you want to create the reservation. 
      
     String 
      
     zone 
      
     = 
      
     "us-central1-a" 
     ; 
      
     // Name of the reservation you want to create. 
      
     String 
      
     reservationName 
      
     = 
      
     "test-reservation-name" 
     ; 
      
     getReservation 
     ( 
     projectId 
     , 
      
     reservationName 
     , 
      
     zone 
     ); 
      
     } 
      
     // Retrieve a reservation with the given name in the given zone. 
      
     public 
      
     static 
      
      Reservation 
     
      
     getReservation 
     ( 
      
     String 
      
     projectId 
     , 
      
     String 
      
     reservationName 
     , 
      
     String 
      
     zone 
     ) 
      
     throws 
      
     IOException 
      
     { 
      
     // Initialize client that will be used to send requests. This client only needs to be created 
      
     // once, and can be reused for multiple requests. 
      
     try 
      
     ( 
      ReservationsClient 
     
      
     reservationsClient 
      
     = 
      
      ReservationsClient 
     
     . 
     create 
     ()) 
      
     { 
      
     // Get the reservation. 
      
      Reservation 
     
      
     reservation 
      
     = 
      
     reservationsClient 
     . 
     get 
     ( 
     projectId 
     , 
      
     zone 
     , 
      
     reservationName 
     ); 
      
     System 
     . 
     out 
     . 
     println 
     ( 
     "Reservation: " 
      
     + 
      
     reservation 
     . 
      getName 
     
     ()); 
      
     return 
      
     reservation 
     ; 
      
     } 
      
     } 
     } 
     
    

Node.js

  • To view a list of your reservations, use the following code sample:

      /* 
     * Copyright 2024 Google LLC 
     * 
     * Licensed under the Apache License, Version 2.0 (the "License"); 
     * you may not use this file except in compliance with the License. 
     * You may obtain a copy of the License at 
     * 
     *     https://www.apache.org/licenses/LICENSE-2.0 
     * 
     * Unless required by applicable law or agreed to in writing, software 
     * distributed under the License is distributed on an "AS IS" BASIS, 
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     * See the License for the specific language governing permissions and 
     * limitations under the License. 
     */ 
     'use strict' 
     ; 
     async 
      
     function 
      
     main 
     () 
      
     { 
      
     // Import the Compute library 
      
     const 
      
     computeLib 
      
     = 
      
     require 
     ( 
     ' @google-cloud/compute 
    ' 
     ); 
      
     // Instantiate a reservationsClient 
      
     const 
      
     reservationsClient 
      
     = 
      
     new 
      
     computeLib 
     . 
      ReservationsClient 
     
     (); 
      
     /** 
     * TODO(developer): Update these variables before running the sample. 
     */ 
      
     // The ID of the project where your reservations are located. 
      
     const 
      
     projectId 
      
     = 
      
     await 
      
     reservationsClient 
     . 
     getProjectId 
     (); 
      
     // The zone where your reservations are located. 
      
     const 
      
     zone 
      
     = 
      
     'us-central1-a' 
     ; 
      
     async 
      
     function 
      
     callGetReservations 
     () 
      
     { 
      
     const 
      
     reservations 
      
     = 
      
     ( 
      
     await 
      
     reservationsClient 
     . 
     list 
     ({ 
      
     project 
     : 
      
     projectId 
     , 
      
     zone 
     , 
      
     }) 
      
     )[ 
     0 
     ]; 
      
     console 
     . 
     log 
     ( 
     JSON 
     . 
     stringify 
     ( 
     reservations 
     )); 
      
     } 
      
     await 
      
     callGetReservations 
     (); 
     } 
     main 
     (). 
     catch 
     ( 
     err 
      
     = 
    >  
     { 
      
     console 
     . 
     error 
     ( 
     err 
     ); 
      
     process 
     . 
     exitCode 
      
     = 
      
     1 
     ; 
     }); 
     
    
  • To view the details of a reservation, use the following code sample:

      /* 
     * Copyright 2024 Google LLC 
     * 
     * Licensed under the Apache License, Version 2.0 (the "License"); 
     * you may not use this file except in compliance with the License. 
     * You may obtain a copy of the License at 
     * 
     *     https://www.apache.org/licenses/LICENSE-2.0 
     * 
     * Unless required by applicable law or agreed to in writing, software 
     * distributed under the License is distributed on an "AS IS" BASIS, 
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     * See the License for the specific language governing permissions and 
     * limitations under the License. 
     */ 
     'use strict' 
     ; 
     async 
      
     function 
      
     main 
     ( 
     reservationName 
     ) 
      
     { 
      
     // Import the Compute library 
      
     const 
      
     computeLib 
      
     = 
      
     require 
     ( 
     ' @google-cloud/compute 
    ' 
     ); 
      
     // Instantiate a reservationsClient 
      
     const 
      
     reservationsClient 
      
     = 
      
     new 
      
     computeLib 
     . 
      ReservationsClient 
     
     (); 
      
     /** 
     * TODO(developer): Update/uncomment these variables before running the sample. 
     */ 
      
     // The ID of the project where your reservation is located. 
      
     const 
      
     projectId 
      
     = 
      
     await 
      
     reservationsClient 
     . 
     getProjectId 
     (); 
      
     // The zone where your reservation is located. 
      
     const 
      
     zone 
      
     = 
      
     'us-central1-a' 
     ; 
      
     // The name of the reservation to return. 
      
     // reservationName = 'reservation-01'; 
      
     async 
      
     function 
      
     callGetReservation 
     () 
      
     { 
      
     const 
      
     requestedReservation 
      
     = 
      
     ( 
      
     await 
      
     reservationsClient 
     . 
     get 
     ({ 
      
     project 
     : 
      
     projectId 
     , 
      
     zone 
     , 
      
     reservation 
     : 
      
     reservationName 
     , 
      
     }) 
      
     )[ 
     0 
     ]; 
      
     console 
     . 
     log 
     ( 
     JSON 
     . 
     stringify 
     ( 
     requestedReservation 
     )); 
      
     } 
      
     await 
      
     callGetReservation 
     (); 
     } 
     main 
     (... 
     process 
     . 
     argv 
     . 
     slice 
     ( 
     2 
     )). 
     catch 
     ( 
     err 
      
     = 
    >  
     { 
      
     console 
     . 
     error 
     ( 
     err 
     ); 
      
     process 
     . 
     exitCode 
      
     = 
      
     1 
     ; 
     }); 
     
    

Python

  • To view a list of your reservations, use the following code sample:

      # Copyright 2024 Google LLC 
     # 
     # Licensed under the Apache License, Version 2.0 (the "License"); 
     # you may not use this file except in compliance with the License. 
     # You may obtain a copy of the License at 
     # 
     #    https://www.apache.org/licenses/LICENSE-2.0 
     # 
     # Unless required by applicable law or agreed to in writing, software 
     # distributed under the License is distributed on an "AS IS" BASIS, 
     # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     # See the License for the specific language governing permissions and 
     # limitations under the License. 
     # This file is automatically generated. Please do not modify it directly. 
     # Find the relevant recipe file in the samples/recipes or samples/ingredients 
     # directory and apply your changes there. 
     from 
      
     google.cloud 
      
     import 
      compute_v1 
     
     from 
      
     google.cloud.compute_v1.services.reservations.pagers 
      
     import 
     ListPager 
     def 
      
     list_compute_reservation 
     ( 
     project_id 
     : 
     str 
     , 
     zone 
     : 
     str 
     = 
     "us-central1-a" 
     ) 
     - 
    > ListPager 
     : 
      
     """ 
     Lists all compute reservations in a specified Google Cloud project and zone. 
     Args: 
     project_id (str): The ID of the Google Cloud project. 
     zone (str): The zone of the reservations. 
     Returns: 
     ListPager: A pager object containing the list of reservations. 
     """ 
     client 
     = 
      compute_v1 
     
     . 
      ReservationsClient 
     
     () 
     reservations_list 
     = 
     client 
     . 
      list 
     
     ( 
     project 
     = 
     project_id 
     , 
     zone 
     = 
     zone 
     , 
     ) 
     for 
     reservation 
     in 
     reservations_list 
     : 
     print 
     ( 
     "Name: " 
     , 
     reservation 
     . 
     name 
     ) 
     print 
     ( 
     "Machine type: " 
     , 
     reservation 
     . 
     specific_reservation 
     . 
     instance_properties 
     . 
     machine_type 
     , 
     ) 
     # Example response: 
     # Name:  my-reservation_1 
     # Machine type:  n1-standard-1 
     # Name:  my-reservation_2 
     # Machine type:  n1-standard-1 
     return 
     reservations_list 
     
    
  • To view the details of a reservation, use the following code sample:

      # Copyright 2024 Google LLC 
     # 
     # Licensed under the Apache License, Version 2.0 (the "License"); 
     # you may not use this file except in compliance with the License. 
     # You may obtain a copy of the License at 
     # 
     #    https://www.apache.org/licenses/LICENSE-2.0 
     # 
     # Unless required by applicable law or agreed to in writing, software 
     # distributed under the License is distributed on an "AS IS" BASIS, 
     # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
     # See the License for the specific language governing permissions and 
     # limitations under the License. 
     # This file is automatically generated. Please do not modify it directly. 
     # Find the relevant recipe file in the samples/recipes or samples/ingredients 
     # directory and apply your changes there. 
     from 
      
     google.cloud 
      
     import 
      compute_v1 
     
     from 
      
     google.cloud.compute_v1.types 
      
     import 
     compute 
     def 
      
     get_compute_reservation 
     ( 
     project_id 
     : 
     str 
     , 
     zone 
     : 
     str 
     = 
     "us-central1-a" 
     , 
     reservation_name 
     = 
     "your-reservation-name" 
     , 
     ) 
     - 
    > compute 
     . 
     Reservation 
     : 
      
     """ 
     Retrieves a compute reservation from GCP. 
     Args: 
     project_id (str): The ID of the Google Cloud project. 
     zone (str): The zone of the reservation. 
     reservation_name (str): The name of the reservation to retrieve. 
     Returns: 
     compute.Reservation: The reservation object retrieved from Google Cloud. 
     """ 
     client 
     = 
      compute_v1 
     
     . 
      ReservationsClient 
     
     () 
     reservation 
     = 
     client 
     . 
      get 
     
     ( 
     project 
     = 
     project_id 
     , 
     zone 
     = 
     zone 
     , 
     reservation 
     = 
     reservation_name 
     , 
     ) 
     print 
     ( 
     "Name: " 
     , 
     reservation 
     . 
     name 
     ) 
     print 
     ( 
     "STATUS: " 
     , 
     reservation 
     . 
     status 
     ) 
     print 
     ( 
     reservation 
     . 
     specific_reservation 
     ) 
     # Example response: 
     # Name:  your-reservation-name 
     # STATUS:  READY 
     # count: 3 
     # instance_properties { 
     #   machine_type: "n1-standard-1" 
     #   local_ssds { 
     #     disk_size_gb: 375 
     #     interface: "NVME" 
     #   } 
     # ... 
     return 
     reservation 
     
    

REST

  • To view a list of your reservations, make a GET request to the reservations.list method :

     GET https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID 
    /zones/ ZONE 
    /reservations 
    

    Replace the following:

    • PROJECT_ID : the ID of the project where you created your reservations.

    • ZONE : the zone where your reservations exist.

    The output is similar to the following example:

     {
      "kind": "compute#reservation",
      "id": "4100668622331754141",
      "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-05",
      "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
      "name": "reservation-05",
      "specificReservation": {
        "instanceProperties": {
          "machineType": "n1-standard-2"
        },
        "count": "100",
        "inUseCount": "0",
        "assuredCount": "100"
      },
      "specificReservationRequired": false,
      "status": "READY",
      "shareSettings": {
        "shareType": "LOCAL"
      }
    },
    {
      "kind": "compute#reservation",
      "id": "2533514314332214789",
      "creationTimestamp": "2019-09-27T08:21:14.707-07:00",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/reservations/reservation-04",
      "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a",
      "name": "reservation-04",
      "specificReservation": {
        "instanceProperties": {
          "machineType": "n1-standard-2",
          "guestAccelerators": [
            {
              "acceleratorType": "nvidia-tesla-t4",
              "acceleratorCount": 1
            }
          ],
          "localSsds": [
            {
              "diskSizeGb": "375",
              "interface": "SCSI"
            }
          ]
        },
        "count": "50",
        "inUseCount": "25",
        "assuredCount": "50"
      },
      "specificReservationRequired": false,
      "status": "READY",
      "shareSettings": {
        "shareType": "LOCAL"
      }
    } 
    

    Optionally, to refine a list of reservations using a filter expression , include the filter query parameter:

     GET https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID 
    /zones/ ZONE 
    /reservations ?filter= FILTER_EXPRESSION 
     
    

    Replace FILTER_EXPRESSION with a filter expression that uses URL-encoded values .

  • To view the details of a reservation, make a GET request to the reservations.get method .

     GET https://compute.googleapis.com/compute/v1/projects/ PROJECT_ID 
    /zones/ ZONE 
    /reservations/ RESERVATION_NAME 
     
    

    Replace the following:

    • PROJECT_ID : the ID of the project where you created the reservation.

    • ZONE : the zone where the reservation exists.

    • RESERVATION_NAME : the name of an existing reservation.

    The output is similar to the following example:

     {
      "kind": "compute#reservation",
      "id": "4488228526648280060",
      "creationTimestamp": "2024-10-11T03:25:23.192-07:00",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/davide-experimental/zones/us-central1-a/reservations/r-01",
      "zone": "https://www.googleapis.com/compute/v1/projects/davide-experimental/zones/us-central1-a",
      "name": "r-01",
      "specificReservation": {
        "instanceProperties": {
          "machineType": "n2-standard-2"
        },
        "count": "50",
        "inUseCount": "25",
        "assuredCount": "50"
      },
      "specificReservationRequired": false,
      "status": "READY",
      "shareSettings": {
        "shareType": "LOCAL"
      }
    } 
    

View future reservation requests

To view the settings of one or more future reservation requests, use one of the following methods described in this section:

  • To view an overview of all future reservation requests in your project, view a list of your requests.

  • To view the full details of a single future reservation request, view the details of the request.

To view future reservation requests, select one of the following options:

Console

  1. In the Google Cloud console, go to the Reservationspage.

    Go to Reservations

  2. Click the Future reservationstab.

    The table lists each future reservation request, and each table column describes a property.

  3. Optional: To refine your list of requests, in the Filterfield, select the properties that you want to filter the requests by.

  4. To view the details of a request, in the Namecolumn, click the name of the request. A page that gives the details of the future reservation request opens.

gcloud

  • To view a list of your future reservation requests, use the gcloud beta compute future-reservations list command :

     gcloud beta compute future-reservations list 
    

    The output is similar to the following example:

     NAME: fr-04
    TOTAL_COUNT: 100
    START_TIME: 2025-07-20T07:00:00Z
    END_TIME: 2025-08-05T07:00:00Z
    PROCUREMENT_STATUS: FULFILLED
    ZONE: us-east1-a
    
    NAME: fr-05
    TOTAL_COUNT: 10
    START_TIME: 2025-07-20T07:00:00Z
    END_TIME: 2025-12-01T00:00:00Z
    PROCUREMENT_STATUS: PENDING_APPROVAL
    ZONE: us-west1-c 
    

    Optionally, to refine a list of future reservation requests using a filter expression , include the --filter flag:

     gcloud beta compute future-reservations list \
        --filter=" FILTER_EXPRESSION 
    " 
    

    Replace FILTER_EXPRESSION with a filter expression.

  • To view the details of a future reservation request, use the gcloud beta compute future-reservations describe command :

     gcloud beta compute future-reservations describe FUTURE_RESERVATION_NAME 
    \
        --zone= ZONE 
     
    

    Replace the following:

    • FUTURE_RESERVATION_NAME : the name of an existing future reservation request.

    • ZONE : the zone where the future reservation request exists.

    The output is similar to the following example:

     autoCreatedReservationsDeleteTime: '2025-05-02T01:00:00Z'
    creationTimestamp: '2025-03-23T10:08:31.613-07:00'
    id: '5212276518668495076'
    kind: compute#futureReservation
    name: fr-01
    planningStatus: SUBMITTED
    selfLink: https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/futureReservations/fr-01
    selfLinkWithId: https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/futureReservations/5212276518668495076
    shareSettings:
      shareType: LOCAL
    specificSkuProperties:
      instanceProperties:
        machineType: n1-standard-64
      totalCount: '800'
    status:
      existingMatchingUsageInfo:
        count: '3'
        timestamp: '2025-03-30T01:00:00Z'
      lockTime: '2025-03-30T17:09:59.297799Z'
      procurementStatus: APPROVED
    timeWindow:
      endTime: '2025-05-02T01:00:00Z'
      startTime: '2025-04-30T17:30:00Z'
    zone: https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a 
    

REST

  • To view a list of your future reservation requests, make a GET request to the beta futureReservations.list method :

     GET https://compute.googleapis.com/compute/beta/projects/ PROJECT_ID 
    /zones/ ZONE 
    /futureReservations 
    

    Replace the following:

    • PROJECT_ID : the ID of the project where you created your future reservation requests.

    • ZONE : the zone where your future reservation requests exist.

    The output is similar to the following example:

     {
      "id": "projects/my-project/zones/us-east1-a/futureReservations",
      "items": [
        {
          "id": "743865190848184978",
          "creationTimestamp": "2025-03-23T18:16:45.274-07:00",
          "selfLink": "https://www.googleapis.com/compute/beta/projects/my-project/zones/us-east1-a/futureReservations/fr-base",
          "selfLinkWithId": "https://www.googleapis.com/compute/beta/projects/my-project/zones/us-east1-a/futureReservations/743865190848184978",
          "zone": "https://www.googleapis.com/compute/beta/projects/my-project/zones/us-east1-a",
          "name": "fr-base",
          "specificSkuProperties": {
            "instanceProperties": {
              "machineType": "n1-standard-1"
            },
            "totalCount": "100"
          },
          "planningStatus": "SUBMITTED",
          "timeWindow": {
            "endTime": "2025-05-02T01:00:00Z",
            "startTime": "2025-04-30T17:30:00Z"
          },
          "status": {
            "procurementStatus": "FULFILLED",
            "lockTime": "2025-03-30T07:00:00Z",
            "existingMatchingUsageInfo": {
              "count": "3",
              "timestamp": "2025-03-30T01:00:00Z"
            }
          },
          "kind": "compute#futureReservation"
        },
        ...
      ],
      "selfLink": "https://www.googleapis.com/compute/beta/projects/my-project/zones/us-east1-a/futureReservations",
      "etag": "AnzKY34l-cvvV-JnniESJ0dtQvQ=/hvc4jaHpxFAZmOt1FVtKNgzZu-M=",
      "kind": "compute#futureReservationsListResponse"
    } 
    

    Optionally, to refine a list of future reservation requests using a filter expression , include the filter query parameter:

     GET https://compute.googleapis.com/compute/beta/projects/ PROJECT_ID 
    /aggregated/futureReservations ?filter= FILTER_EXPRESSION 
     
    

    Replace FILTER_EXPRESSION with a filter expression that uses URL-encoded values .

  • To view the details of a future reservation request, make a GET request to the beta futureReservations.get method :

     GET https://compute.googleapis.com/compute/beta/projects/ PROJECT_ID 
    /zones/ ZONE 
    /futureReservations/ FUTURE_RESERVATION_NAME 
     
    

    Replace the following:

    • PROJECT_ID : the ID of the project where you created the future reservation request.

    • ZONE : the zone where the future reservation request exists.

    • FUTURE_RESERVATION_NAME : the name of an existing future reservation request.

    The output is similar to the following:

     {
      "autoCreatedReservationsDeleteTime": "2025-05-02T01:00:00Z",
      "creationTimestamp": "2025-03-23T10:08:31.613-07:00",
      "id": "5212276518668495076",
      "kind": "compute#futureReservation",
      "name": "fr-01",
      "planningStatus": "SUBMITTED",
      "selfLink": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/futureReservations/fr-01",
      "selfLinkWithId": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a/futureReservations/5212276518668495076",
      "shareSettings": {
        "shareType": "LOCAL"
      },
      "specificSkuProperties": {
        "instanceProperties": {
          "machineType": "n1-standard-64"
        },
        "totalCount": "800"
      },
      "status": {
        "lockTime": "2025-03-30T17:09:59.297799Z",
        "procurementStatus": "APPROVED",
        "existingMatchingUsageInfo": {
          "count": "3",
          "timestamp": "2025-03-30T01:00:00Z"
        }
      },
      "timeWindow": {
        "endTime": "2025-05-02T01:00:00Z",
        "startTime": "2025-04-30T17:30:00Z"
      },
      "zone": "https://www.googleapis.com/compute/beta/projects/example-project/zones/us-central1-a"
    } 
    

Determine the number of consumable instances

To determine the number of compute instances that can consume your reserved capacity, do one of the following:

Consumable instances in a reservation

When you view the details of a reservation , you can view how many compute instances are consuming the reservation, and how many instances can consume it, by checking the following fields:

  • Assured count ( assuredCount ): the number of instances that are physically reserved within the zone of the reservation. This number includes the instances reserved for your project, and for any project a shared reservation is shared with.

  • Total count ( count ): the number of reserved instances specified in the reservation. This number should match the assured count.

  • Machines in use ( inUseCount ): the number of running instances in your project, or a project a shared reservation is shared with, that are consuming the reservation.

For example, if the assured count ( assuredCount ) and total count ( count ) are both 50, and the number of instances consuming the reservation ( inUseCount ) is 25, then 25 more instances can consume the reservation before it's fully consumed.

Consumable instances in a future reservation request

You can determine the number of compute instances for which Compute Engine creates a reservation at a future reservation request start time. For a draft, pending approval, or approved request, you can determine this number as follows:

  1. View how many running instances and unused reservations in your project, and in any project the request is shared with, match the request properties.

  2. Subtract the number of matching running instances and unused reservations from the total count in the request.

You can determine the number of consumable instances for single or multiple requests at once. For multiple requests, use the Google Cloud console or REST API. For single requests, select any of the following options:

Console

  1. In the Google Cloud console, go to the Reservationspage.

    Go to Reservations

  2. Click the Future reservationstab.

    The table lists each future reservation request, and each table column describes a property.

  3. To determine the number of instances that Compute Engine plans to reserve for a request at its start time, subtract the Matching countcolumn from the Total countcolumn.

    The Matching countcolumn shows one of the following warnings:

    • Matching count is zero: there are no matching running instances or unused reservations in your project, or in any project that your request is shared with.

    • Matching count equals Total count: Compute Engine won't reserve any instances for your request at its star time.

    If you modify a request , or create new instances or reservations that match the request, then Compute Engine updates the Matching countcolumn within 30 minutes.

  4. Optional: To check when the Matching countcolumn was last updated in a request, do the following:

    1. In the Namecolumn, click the name of the request. A page that gives the details of the future reservation request opens.

    2. In the Resource detailssection, check the Last matching usage evaluation timefield.

gcloud

  1. To view the details of a future reservation request, use the gcloud beta compute future-reservations describe command :

     gcloud beta compute future-reservations describe FUTURE_RESERVATION_NAME 
    \
        --zone= ZONE 
     
    

    Replace the following:

    • FUTURE_RESERVATION_NAME : the name of an existing future reservation request.

    • ZONE : the zone where the future reservation request exists.

    In the output, find the count and totalCount fields:

     ...
    specificSkuProperties:
      ... totalCount: '100'status:
      existingMatchingUsageInfo: count: '50'timestamp: '2025-03-30T01:00:00Z'
      ...
      procurementStatus: DRAFTING
    ... 
    
  2. Subtract the value of count from totalCount . For example, if count is 50 and totalCount is 100, then Compute Engine automatically creates a reservation for 50 instances at the request start time.

    If you modify the request , or create new instances or reservations that match the request, then Compute Engine updates the existingMatchingUsageInfo field within 30 minutes. To verify when this field was last updated, check the value of existingMatchingUsageInfo.timestamp .

REST

  1. To view a list of your future reservation requests, make a GET request to the beta futureReservations.list method . In the request URL, include the filter query parameter and specify to show only the name , specificSkuProperties , and status fields:

     GET https://compute.googleapis.com/compute/beta/projects/ PROJECT_ID 
    /zones/ ZONE 
    /futureReservations?fields=items.name,items.specificSkuProperties,items.status 
    

    Replace the following:

    • PROJECT_ID : the ID of the project where you created your future reservation requests.

    • ZONE : the zone where the future reservation request exists.

    In the output, find the count and totalCount fields for each draft, pending approval, or approved request:

     {
      "items": [
        {
          "specificSkuProperties": {
            ... totalCount: "100"},
          "name": "fr-01",
          "status": {
            "procurementStatus": "APPROVED",
            ...
            existingMatchingUsageInfo: { count: "50",
              "timestamp": "2025-01-22T07:54:26.295Z"
            }
          }
        },
        {
          "specificSkuProperties": {
            ... totalCount: "20"},
          "name": "fr-02",
          "status": {
            "procurementStatus": "DRAFTING",
            ...
            existingMatchingUsageInfo: { "count": "2",
              "timestamp": "2025-01-22T07:54:26.295Z"
            }
          }
        }
      ]
    } 
    
  2. For each request, subtract the value of count from totalCount . For example, if count is 50 and totalCount is 100, then Compute Engine automatically creates a reservation for 50 instances at the request start time.

    If you modify a request , or create new instances or reservations that match the request, then Compute Engine updates the existingMatchingUsageInfo field within 30 minutes. To verify when this field was last updated, check the value of existingMatchingUsageInfo.timestamp .

Consumable instances in a future reservation request in calendar mode

When you view the details of a future reservation request , you can see how many compute instances Compute Engine plans to provision at the request start time. Compute Engine creates the number of instances specified in the request, regardless of the number of matching instances in your project or in any project that the request is shared with.

What's next

Create a Mobile Website
View Site in Mobile | Classic
Share by: