View reservations or future reservation requests
This document explains how to view your reservations, future reservation requests, and reservation consumption. To learn more about reservations, see Choose a reservation type.
When you view your reservations, future reservation requests, or reservation consumption, 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.
View reservation consumption. This review lets you verify which reservation a specific Compute Engine instance is consuming, or list all instances that are consuming a particular reservation within a project.
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
-
Install the Google Cloud CLI. After installation, initialize the Google Cloud CLI by running the following command:
gcloudinit
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- 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:
gcloudauthapplication-defaultlogin
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:
gcloudauthapplication-defaultlogin
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:
gcloudauthapplication-defaultlogin
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:
gcloudauthapplication-defaultlogin
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 permissions section:
Required permissions
The following permissions are required to view reservations or future reservation requests:
-
To view a list of reservations:
compute.reservations.liston the project -
To view a list of future reservation requests:
compute.futureReservations.liston the project -
To view the details of a reservation:
compute.reservations.geton the project -
To view the details of a future reservation request:
compute.futureReservations.geton 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
In the Google Cloud console, go to the Reservations page.
On the On-demand reservations tab (default), the table lists each reservation, and each table column describes a property.
Optional: In the On-demand reservations table, do one or both of the following:
To display the assured count of your reservations, click Column display options..., select the Assured count checkbox, and then click OK.
To refine your list of reservations, in the Filter field, select the properties that you want to filter the reservations by.
To view the details of a reservation, in the Name column, 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 listcommand:gcloud compute reservations listThe 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: LOCALOptionally, to refine a list of reservations using a filter expression, include the
--filterflag:gcloud compute reservations list \ --filter="FILTER_EXPRESSION"Replace
FILTER_EXPRESSIONwith a filter expression.To view the details of a reservation, use the
gcloud compute reservations describecommand:gcloud compute reservations describe RESERVATION_NAME \ --zone=ZONEReplace 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月11日T03: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. packagesnippets 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 funclistReservations(wio.Writer,projectID,zonestring)error{ // projectID := "your_project_id" // zone := "us-west3-a" ctx:=context.Background() reservationsClient,err:=compute.NewReservationsRESTClient (ctx) iferr!=nil{ returnerr } deferreservationsClient.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() iferr==iterator.Done { break } iferr!=nil{ returnerr } fmt.Fprintf(w,"- %s %d\n",instance.GetName(),instance.GetSpecificReservation().GetCount()) } returnnil }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. packagesnippets 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 funcgetReservation(wio.Writer,projectID,zone,reservationNamestring)(*computepb.Reservation,error){ // projectID := "your_project_id" // zone := "us-west3-a" // reservationName := "your_reservation_name" ctx:=context.Background() reservationsClient,err:=compute.NewReservationsRESTClient (ctx) iferr!=nil{ returnnil,err } deferreservationsClient.Close() req:=&computepb.GetReservationRequest{ Project:projectID, Reservation:reservationName, Zone:zone, } reservation,err:=reservationsClient.Get(ctx,req) iferr!=nil{ returnnil,fmt.Errorf("unable to delete reservation: %w",err) } fmt.Fprintf(w,"Reservation: %s\n",reservation.GetName()) returnreservation,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. */ packagecompute.reservation; importcom.google.cloud.compute.v1.Reservation ; importcom.google.cloud.compute.v1.ReservationsClient ; importjava.io.IOException; importjava.util.ArrayList; importjava.util.List; publicclass ListReservations{ publicstaticvoidmain(String[]args)throwsIOException{ // TODO(developer): Replace these variables before running the sample. // Project ID or project number of the Cloud project you want to use. Stringproject="YOUR_PROJECT_ID"; // Zone in which reservations are located. Stringzone="us-central1-a"; listReservations(project,zone); } // List all reservations in the given project and zone. publicstaticList<Reservation>listReservations(Stringproject,Stringzone)throwsIOException{ // 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=newArrayList<>(); try(ReservationsClient reservationsClient=ReservationsClient .create()){ for(Reservation reservation:reservationsClient.list(project,zone).iterateAll()){ listOfReservations.add(reservation); System.out.println("Reservation: "+reservation.getName()); } } returnlistOfReservations; } }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. */ packagecompute.reservation; importcom.google.cloud.compute.v1.Reservation ; importcom.google.cloud.compute.v1.ReservationsClient ; importjava.io.IOException; importjava.util.concurrent.ExecutionException; importjava.util.concurrent.TimeoutException; publicclass GetReservation{ publicstaticvoidmain(String[]args) throwsIOException,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. StringprojectId="YOUR_PROJECT_ID"; // Name of the zone in which you want to create the reservation. Stringzone="us-central1-a"; // Name of the reservation you want to create. StringreservationName="test-reservation-name"; getReservation(projectId,reservationName,zone); } // Retrieve a reservation with the given name in the given zone. publicstaticReservation getReservation( StringprojectId,StringreservationName,Stringzone) throwsIOException{ // 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 ()); returnreservation; } } }
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'; asyncfunctionmain(){ // Import the Compute library constcomputeLib=require('@google-cloud/compute'); // Instantiate a reservationsClient constreservationsClient=newcomputeLib.ReservationsClient (); /** * TODO(developer): Update these variables before running the sample. */ // The ID of the project where your reservations are located. constprojectId=awaitreservationsClient.getProjectId(); // The zone where your reservations are located. constzone='us-central1-a'; asyncfunctioncallGetReservations(){ constreservations=( awaitreservationsClient.list({ project:projectId, zone, }) )[0]; console.log(JSON.stringify(reservations)); } awaitcallGetReservations(); } 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'; asyncfunctionmain(reservationName){ // Import the Compute library constcomputeLib=require('@google-cloud/compute'); // Instantiate a reservationsClient constreservationsClient=newcomputeLib.ReservationsClient (); /** * TODO(developer): Update/uncomment these variables before running the sample. */ // The ID of the project where your reservation is located. constprojectId=awaitreservationsClient.getProjectId(); // The zone where your reservation is located. constzone='us-central1-a'; // The name of the reservation to return. // reservationName = 'reservation-01'; asyncfunctioncallGetReservation(){ constrequestedReservation=( awaitreservationsClient.get({ project:projectId, zone, reservation:reservationName, }) )[0]; console.log(JSON.stringify(requestedReservation)); } awaitcallGetReservation(); } 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. fromgoogle.cloudimport compute_v1 fromgoogle.cloud.compute_v1.services.reservations.pagersimport ListPager deflist_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_listTo 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. fromgoogle.cloudimport compute_v1 fromgoogle.cloud.compute_v1.typesimport compute defget_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
GETrequest to thereservations.listmethod:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservationsReplace 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月27日T08: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月27日T08: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
filterquery parameter:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations?filter=FILTER_EXPRESSIONReplace
FILTER_EXPRESSIONwith a filter expression that uses URL-encoded values.To view the details of a reservation, make a
GETrequest to thereservations.getmethod.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAMEReplace 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月11日T03: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
In the Google Cloud console, go to the Reservations page.
Click the Future reservations tab.
The table lists each future reservation request, and each table column describes a property.
Optional: To refine your list of requests, in the Filter field, select the properties that you want to filter the requests by.
To view the details of a request, in the Name column, 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 compute future-reservations listcommand:gcloud compute future-reservations listThe output is similar to the following example:
NAME: fr-04 TOTAL_COUNT: 100 START_TIME: 2025年07月20日T07:00:00Z END_TIME: 2025年08月05日T07:00:00Z PROCUREMENT_STATUS: FULFILLED ZONE: us-east1-a NAME: fr-05 TOTAL_COUNT: 10 START_TIME: 2025年07月20日T07:00:00Z END_TIME: 2025年12月01日T00:00:00Z PROCUREMENT_STATUS: PENDING_APPROVAL ZONE: us-west1-cOptionally, to refine a list of future reservation requests using a filter expression, include the
--filterflag:gcloud compute future-reservations list \ --filter="FILTER_EXPRESSION"Replace
FILTER_EXPRESSIONwith a filter expression.To view the details of a future reservation request, use the
gcloud compute future-reservations describecommand:gcloud compute future-reservations describe FUTURE_RESERVATION_NAME \ --zone=ZONEReplace 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月02日T01:00:00Z' creationTimestamp: '2025年03月23日T10:08:31.613-07:00' id: '5212276518668495076' kind: compute#futureReservation name: fr-01 planningStatus: SUBMITTED selfLink: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/futureReservations/fr-01 selfLinkWithId: https://www.googleapis.com/compute/v1/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月30日T01:00:00Z' lockTime: '2025年03月30日T17:09:59.297799Z' procurementStatus: APPROVED timeWindow: endTime: '2025年05月02日T01:00:00Z' startTime: '2025年04月30日T17:30:00Z' zone: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a
REST
To view a list of your future reservation requests, make a
GETrequest to thefutureReservations.listmethod:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservationsReplace 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月23日T18:16:45.274-07:00", "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-a/futureReservations/fr-base", "selfLinkWithId": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-a/futureReservations/743865190848184978", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east1-a", "name": "fr-base", "specificSkuProperties": { "instanceProperties": { "machineType": "n1-standard-1" }, "totalCount": "100" }, "planningStatus": "SUBMITTED", "timeWindow": { "endTime": "2025年05月02日T01:00:00Z", "startTime": "2025年04月30日T17:30:00Z" }, "status": { "procurementStatus": "FULFILLED", "lockTime": "2025年03月30日T07:00:00Z", "existingMatchingUsageInfo": { "count": "3", "timestamp": "2025年03月30日T01:00:00Z" } }, "kind": "compute#futureReservation" }, ... ], "selfLink": "https://www.googleapis.com/compute/v1/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
filterquery parameter:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/aggregated/futureReservations?filter=FILTER_EXPRESSIONReplace
FILTER_EXPRESSIONwith a filter expression that uses URL-encoded values.To view the details of a future reservation request, make a
GETrequest to thefutureReservations.getmethod:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAMEReplace 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月02日T01:00:00Z", "creationTimestamp": "2025年03月23日T10:08:31.613-07:00", "id": "5212276518668495076", "kind": "compute#futureReservation", "name": "fr-01", "planningStatus": "SUBMITTED", "selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/futureReservations/fr-01", "selfLinkWithId": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/futureReservations/5212276518668495076", "shareSettings": { "shareType": "LOCAL" }, "specificSkuProperties": { "instanceProperties": { "machineType": "n1-standard-64" }, "totalCount": "800" }, "status": { "lockTime": "2025年03月30日T17:09:59.297799Z", "procurementStatus": "APPROVED", "existingMatchingUsageInfo": { "count": "3", "timestamp": "2025年03月30日T01:00:00Z" } }, "timeWindow": { "endTime": "2025年05月02日T01:00:00Z", "startTime": "2025年04月30日T17:30:00Z" }, "zone": "https://www.googleapis.com/compute/v1/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:
To view the maximum number of instances that can consume a reservation, see Consumable instances in a reservation.
To view the number of instances that Compute Engine is set to reserve for a future reservation request at the request start time, see Consumable instances in a future reservation request.
To view the number of instances that Compute Engine is set to reserve for a future reservation request in calendar mode at the request start time, see Consumable instances in a future reservation request in calendar mode.
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:
View how many running instances and unused reservations in your project, and in any project the request is shared with, match the request properties.
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
In the Google Cloud console, go to the Reservations page.
Click the Future reservations tab.
The table lists each future reservation request, and each table column describes a property.
To determine the number of instances that Compute Engine plans to reserve for a request at its start time, subtract the Matching count column from the Total count column.
The Matching count column 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 count column within 30 minutes.
Optional: To check when the Matching count column was last updated in a request, do the following:
In the Name column, click the name of the request. A page that gives the details of the future reservation request opens.
In the Resource details section, check the Last matching usage evaluation time field.
gcloud
To view the details of a future reservation request, use the
gcloud compute future-reservations describecommand:gcloud compute future-reservations describe FUTURE_RESERVATION_NAME \ --zone=ZONEReplace 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
countandtotalCountfields:... specificSkuProperties: ... totalCount: '100' status: existingMatchingUsageInfo: count: '50' timestamp: '2025年03月30日T01:00:00Z' ... procurementStatus: DRAFTING ...Subtract the value of
countfromtotalCount. For example, ifcountis 50 andtotalCountis 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
existingMatchingUsageInfofield within 30 minutes. To verify when this field was last updated, check the value ofexistingMatchingUsageInfo.timestamp.
REST
To view a list of your future reservation requests, make a
GETrequest to thefutureReservations.listmethod. In the request URL, include thefilterquery parameter and specify to show only thename,specificSkuProperties, andstatusfields:GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations?fields=items.name,items.specificSkuProperties,items.statusReplace 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
countandtotalCountfields for each draft, pending approval, or approved request:{ "items": [ { "specificSkuProperties": { ... totalCount: "100" }, "name": "fr-01", "status": { "procurementStatus": "APPROVED", ... existingMatchingUsageInfo: { count: "50", "timestamp": "2025年01月22日T07:54:26.295Z" } } }, { "specificSkuProperties": { ... totalCount: "20" }, "name": "fr-02", "status": { "procurementStatus": "DRAFTING", ... existingMatchingUsageInfo: { "count": "2", "timestamp": "2025年01月22日T07:54:26.295Z" } } } ] }For each request, subtract the value of
countfromtotalCount. For example, ifcountis 50 andtotalCountis 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
existingMatchingUsageInfofield within 30 minutes. To verify when this field was last updated, check the value ofexistingMatchingUsageInfo.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.
View reservation consumption
Whenever a compute instance consumes a reservation, you can view the following:
- View the reservation that an instance is consuming
- View a list of instances that are consuming a reservation
View the reservation that an instance is consuming
To view the reservation that an instance is consuming, select one of the following options:
Console
In the Google Cloud console, go to the VM instances page.
Click the name of the instance that is consuming a reservation that you want to view.
In the Basic information section, the Consumed reservation field shows the name of the reservation that the instance is consuming.
gcloud
To view the reservation that an instance is consuming, use the
gcloud compute instances describe command
with the --flatten=resourceStatus.reservationConsumptionInfo flag:
gcloud compute instances describe INSTANCE_NAME \
--flatten=resourceStatus.reservationConsumptionInfo \
--zone=ZONE
Replace the following:
INSTANCE_NAME: the name of the instance.ZONE: the zone where the instance exists.
You see an output that is similar to the following:
consumedReservation: https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-c/reservations/example-reservation
REST
To view the reservation that an instance is consuming, make a GET request
to the instances.get method.
In the request URL, include the fields query parameter set to
resourceStatus.reservationConsumptionInfo:
GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/var>/zones/ZONE/instances/INSTANCE_NAME?fields=resourceStatus.reservationConsumptionInfo
Replace the following:
PROJECT_ID: the ID of the project in which the instance exists.ZONE: the zone where the instance exists.INSTANCE_NAME: the name of the instance.
You see a response that is similar to the following:
{
"resourceStatus": {
"reservationConsumptionInfo": {
"consumedReservation": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations/example-reservation"
}
}
}
View a list of instances that are consuming a reservation
You can view a list of instances consuming a reservation within a single project. For shared reservations, this method returns only the instances in the project that you specify; it doesn't include instances from other consumer projects that are consuming the same reservation.
To view the instances that are consuming a reservation, select one of the following options:
gcloud
To view the instances that are consuming a reservation, use the
gcloud compute instances list command
with the --filter flag set to the reservation that you want to view:
gcloud compute instances list \
--project=CONSUMER_PROJECT_ID \
--zones=ZONE \
--filter="resourceStatus.reservationConsumptionInfo.consumedReservation:https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/zones/ZONE/reservations/RESERVATION_NAME"
Replace the following:
CONSUMER_PROJECT_ID: the ID of the project consuming the reservation.ZONE: the zone where the reservation and the instances are located.HOST_PROJECT_ID: the ID of the project where the reservation was created (if different from the consumer project).RESERVATION_NAME: the name of the reservation.
You see an output that is similar to the following:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
my-e2-instance us-central1-c e2-medium 10.128.0.61 35.239.208.172 RUNNING
my-e2-instance-02 us-central1-c e2-medium 10.128.0.62 104.154.31.123 RUNNING
my-e2-instance-03 us-central1-c e2-medium 10.128.0.63 34.171.90.254 RUNNING
REST
To view the instances that are consuming a reservation, make a GET request
to the instances.list method.
In the request URL, include the filter query parameter set to the name of
the reservation that you want to view:
GET https://compute.googleapis.com/compute/v1/projects/CONSUMER_PROJECT_ID/zones/ZONE/instances?filter=resourceStatus.reservationConsumptionInfo.consumedReservation%3D%22.*%2Fprojects%2FHOST_PROJECT_ID%2Fzones%2FZONE%2Freservations%2FRESERVATION_NAME%22
Replace the following:
CONSUMER_PROJECT_ID: the ID of the project consuming the reservation.ZONE: the zone where the reservation and the instances are located.HOST_PROJECT_ID: the ID of the project where the reservation was created (if different from the consumer project).RESERVATION_NAME: the name of the reservation.
You see a response that is similar to the following:
{
"kind": "compute#instanceList",
"id": "projects/example-project/zones/us-central1-a/instances",
"items": [
{
...
"name": "example-instance-01",
...
"resourceStatus": {
"scheduling": {},
"reservationConsumptionInfo": {
"consumedReservation": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations/example-reservation"
}
}
},
{
...
"name": "example-instance-02",
...
"resourceStatus": {
"scheduling": {},
"reservationConsumptionInfo": {
"consumedReservation": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/reservations/example-reservation"
}
},
...
}
],
"selfLink": "https://www.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/instances"
}
What's next
Learn how to attach reservations to commitments.
Learn how to consume reservations.
Learn how to modify reservations.
Learn how to delete reservations.