Create shared future reservation requests

This document explains how to create future reservation requests that are sharedacross multiple projects.

After Google Cloud approves a shared future reservation request,Compute Engine automatically creates (auto-creates) reservations with yourrequested resources at your specified start time. You have very high assurancethat Compute Engine delivers your reserved resources, giving both yourproject and any projects that the reservations are shared with exclusiveaccess to those resources for the entire reservation period. You can then usethe reserved resources to create virtual machine (VM) instances.

To learn more about the requirements and limitations that you apply when youcreate a future reservation request, seeAbout future reservation requests.

Important: Before you create and submit a future reservation request for GPUVMs, you must contact youraccount team or thesales team to discuss your request.Otherwise, Google Cloud is likely to decline it.

Before you begin

  • If you haven't already, then review thebestpractices for consuming shared auto-created reservations.
  • You must verify that you have sufficient quota for the resources that youwant to reserve. If your quota is insufficient, then Google Cloud islikely to decline your future reservation request. Or, if the request isapproved but you lack quota at the start time of your request,Compute Engine only delivers part, or none, of the reserved resources.For more information about the different types of quota inCompute Engine, seeAllocation quotas.
  • If you haven't already, set upauthentication. 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:

      gcloudinit

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

      Note: If you installed the gcloud CLI previously, make sure you have the latest version by runninggcloud components update.
    2. Set a default region and zone.

    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. 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.

      Note: If you installed the gcloud CLI previously, make sure you have the latest version by runninggcloud components update.

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

  • Required roles

    To get the permissions that you need to create shared future reservation requests, ask your administrator to grant you theCompute Future Reservation User (roles/compute.futureReservationUser) IAM role on the project. For more information about granting roles, seeManage access to projects, folders, and organizations.

    This predefined role contains the permissions required to create shared future reservation requests. To see the exact permissions that are required, expand theRequired permissions section:

    Required permissions

    The following permissions are required to create shared future reservation requests:

    • To create a future reservation request: compute.futureReservations.create on the project
    • To let Compute Engine auto-create reservations: compute.reservations.create on the project
    • To specify an instance template: compute.instanceTemplates.useReadOnly on the instance template

    You might also be able to get these permissions withcustom roles or otherpredefined roles.

    Restrictions

    In addition to the generalrestrictionsfor future reservations, creating shared future reservation requests has thefollowing restrictions:

    • The project you use to create shared future reservation requests (the ownerproject) must be added to the allowlist for theShared Reservations Owner Projects (compute.sharedReservationsOwnerProjects)organization policy constraint by an organization policy administrator. Formore information, seeAllow and restrict projects to create and modify shared reservationsin the Compute Engine reservations documentation.

    • If you move a project that created a shared future reservation request to adifferent organization, the shared future reservation is deleted. Theproject is not automatically removed from theShared Reservations Owner Projects(compute.sharedReservationsOwnerProjects) organizational policyconstraint, but you can remove the project from this constraint if desired.

    • Each shared future reservation request can be shared with up to 100 consumerprojects.

    • For each organization, you can create up to 100 shared future reservationrequests for each unique combination ofVM properties.

    Create a draft request

    When creating a future reservation request, you can either save the request asa draft and later submit it to Google Cloud for review, or directly submitthe request for review. Google recommends creating a draft request first as thislets youdetermine the number of VMsthat Compute Engine will provision for your request instead of manuallyestimating this number, and optionallymodify the number of reserved VMs in the requestbefore submitting it for review.

    To consume an auto-created reservation for a future reservation, a VM must haveproperties thatexactly matchthat reservation. To specify the properties of the VMs that you want to requestto reserve by creating a draft future reservation request, use one of thefollowing methods:

    • Recommended:Specify an instance template

      You can use an existinginstance template to define theproperties of a draft future reservation request. By using an instancetemplate, you can define the properties of a future reservation request andthe VMs that can consume the auto-created reservations in the same place.However, because templates are project-specific, you can't use the sametemplate to create VMs that can consume the auto-created reservationsoutside of the project that created the future reservation request. For theprojects the future reservation is shared with, you must create similartemplates in those projects or create VMs by specifying properties directly.

    • Specify an existing VM

      You can use an existing VM to define the properties of a future reservationrequest. By using the properties of an existing VM, you can consume theauto-created reservations provisioned for the future reservation by creatingVMs with properties that match the reference VM.

    • Specify properties directly

      You can directly define the properties of a draft future reservationrequest. This method requires you to manually ensure that the properties ofyour VMs and the auto-created reservationsexactly match—anymismatched properties prevent consumption.

    An auto-created reservation for a future reservation can be automaticallyconsumed by any VM with matching properties. If you want to avoid a VM toconsume any of these auto-created reservations, see how tocreate VMs without consuming reservations.

    Specify an instance template

    When creating a shared future reservation request by specifying an instancetemplate, consider the following:

    • An instance template contains project-specific settings, so you can onlyaccess and use an instance template within the same project. If you create ashared future reservation request by specifying an instance template, youmust create similar templates to create VMs, or create VMs by specifyingmatching properties directly, to consume the auto-created reservations ineach consumer project.

    • You must create your future reservation request in the same region and zoneas the resources within the instance template. Anyregionalorzonal resourcesthat are specified in an instance template—such as a machine type or aPersistent Disk—restrict the use of the template to the locations wherethose resources are located. For example, if your instance templatespecifies an existing Persistent Disk in theus-central1-a zone, thenyou must create your future reservation request in the same zone. Otherwise,creating the future reservation request fails.

      To check if an existing template specifies any resources that bind thetemplate to a specific region or zone,view the details of the templateand look for references to regional or zonal resources inside of it.

    • If you want to attach the auto-created reservations provisioned for a futurereservation to a commitment, then you must disable the auto-delete option.For more information, seeRestrictions after creation.

    After creating a future reservation request, you can't modify the futurereservation request to override the template's VM properties or specify anothertemplate. Instead, if you need to change the VM properties specified in therequest, you mustcreate a new future reservation request.

    To create a shared future reservation by specifying an existing instancetemplate, select one of the following options:

    Console

    1. In the Google Cloud console, go to theReservations page.

      Go to Reservations

    2. Click theFuture reservations tab.

    3. ClickCreate future reservation.

      TheCreate a future reservation page opens.

    4. ForName, enter a name for your future reservation request.

    5. ForPrefix, enter a name prefix. The name of each auto-createdreservation from this future reservation request starts with this prefix.

    6. ForRegion andZone, select the region and zone in which to reserveresources.

    7. ForStart time, enter a start time for the reservation period. The starttime can't be later than one year from the date and time at which you submita future reservation request for review. To have sufficient time tooptionally modify, cancel, or delete the future reservation before it entersits lock time, specify arecommended value for the start time.

    8. ForEnd time, enter an end time for the reservation period. In theDuration summary section, you can see the length of the reservationperiod. To increase the likelihood that Google Cloud approves yourfuture reservation request after submitting it for review, specify arecommended value for the reservation period.

    9. In theShare type section, do the following:

      1. To specify a shared future reservation request, selectShared.

      2. ClickAdd projects, and thenselect the projects from the current project's organization that youwant to share the future reservation request with. You can select up to100 projects.

    10. ForTotal capacity needed, enter thetotal countof VMs that you want reserved for the period, VM configuration, and projectsspecified in this future reservation request.

      Important: Verify that you have sufficient quota for the resources thatyou're requesting to reserve. Otherwise, if you submit the futurereservation request for review, Google Cloud declines it.
    11. In theMachine configuration section, do the following:

      1. SelectUse instance template.

      2. ForInstance template, select the instance template of your choice.If you select a regional instance template, then you can only reserveresources within the same region as the template's region.

    12. In theAuto-generated reservations auto-delete section, do one ofthe following:

    13. To finish creating the draft future reservation request, clickSave a draft.

    TheReservations page opens. Creating the future reservation request cantake up to a minute to complete.

    gcloud

    To create asharedfuture reservation request by specifyingan instance template, use thegcloud compute future-reservations create commandwith the--share-setting=projects and--share-with flags.

    To create a draft future reservation request by specifyingan instance template without includingany optional flags, and auto-delete the auto-created reservation at the end ofthe reservation period, run the following command:

    gcloud compute future-reservations createFUTURE_RESERVATION_NAME \    --auto-delete-auto-created-reservations \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

    Replace the following:

    • FUTURE_RESERVATION_NAME: the name of the futurereservation request.
    • CONSUMER_PROJECT_IDS: a comma-separated list of IDs ofprojects that you want to allow to consume the auto-created reservations forthis future reservation request—for example,project-1,project-2.You can specify up to 100 projects. These projects must be in the sameorganization as the project where the future reservation request is created(the owner project). Don't specify the owner project. By default, it'salready allowed to consume the auto-created reservations for this futurereservation request.
    • PROJECT_ID: the ID of the project where you want toreserve resources and where the instance template is located.

    • LOCATION: the location of the instance template. Specifyone of the following values:

      • For a regional instance template:regions/REGION. ReplaceREGIONwith the region where the instance template is located. If you specify aregional instance template, then you can only create the futurereservation request within the same region as the template's region.

      • For a global instance template:global.

    • INSTANCE_TEMPLATE_NAME: the name of an existing instancetemplate.

    For example, suppose that you want to create a draft future reservation requestnamedfr-02 inzoneus-central1-a with the following properties:

    • A reservation period that starts at midnight on November 10, 2024 UTC, andends at midnight on December 10, 2024 UTC.

    • A total count of 80 VMs.

    • A regional instance template from regionus-central1.
    • The auto-delete option enabled. The auto-created reservations are deleted atthe end of the reservation period.
    • The future reservation request is shared withproject-1 andproject-2.

    To createfr-02,run the following command:

    gcloud compute future-reservations create fr-02 \    --auto-delete-auto-created-reservations \    --share-setting=projects \    --share-with=project-1,project-2 \    --source-instance-template=projects/example-project/regions/us-central1/instanceTemplates/example-template \    --start-time=2024-11-10T00:00:00Z \    --end-time=2024-12-10T00:00:00Z \    --total-count=80 \    --zone=us-central1-a

    Optionally, you can do one or more of the following:

    • To delete the auto-created reservations after the end time of thereservation period, select one of the following methods:

      • To delete the auto-created reservations at a specific date and timeafter the end time of the reservation period, include the--auto-created-reservations-delete-time flag.

        gcloud compute future-reservations createFUTURE_RESERVATION_NAME \--auto-created-reservations-delete-time=AUTO_CREATED_RESERVATIONS_DELETE_TIME \    --auto-delete-auto-created-reservations \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

        ReplaceAUTO_CREATED_RESERVATIONS_DELETE_TIME with adate and time formatted as an RFC 3339 timestamp.

      • To delete the auto-created reservations after a specific duration afterthe end time of the reservation period, include the--auto-created-reservations-duration flag.

        gcloud compute future-reservations createFUTURE_RESERVATION_NAME \--auto-created-reservations-duration=DURATION_BEFORE_DELETE \    --auto-delete-auto-created-reservations \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

        ReplaceDURATION_BEFORE_DELETE with a duration in days,hours, minutes, or seconds. For example, specify30m for 30 minutes,or1d2h3m4s for one day, two hours, three minutes, and four seconds.

    • To disable the auto-delete option for the auto-created reservations, replacethe--auto-delete-auto-created-reservations flag with the--no-auto-delete-auto-created-reservations flag.

      gcloud compute future-reservations createFUTURE_RESERVATION_NAME \--no-auto-delete-auto-created-reservations \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE
    • To specify a name prefix for the auto-created reservations, include the--name-prefix flag.

      gcloud compute future-reservations createFUTURE_RESERVATION_NAME \    --auto-delete-auto-created-reservations \--name-prefix=NAME_PREFIX \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --source-instance-template=projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

      ReplaceNAME_PREFIX with the name prefix for eachauto-created reservation. To help you identify the auto-created reservationsfor this future reservation request, Google Cloud recommends tospecify a unique name prefix.

    REST

    To create asharedfuture reservation request by specifyingan instance template, make aPOST request to thefutureReservations.insert method.

    To create a draft future reservation request by specifyingan instance template without includingany optional fields, make aPOST request as follows:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{  "autoDeleteAutoCreatedReservations":AUTO_DELETE_AUTO_CREATED_RESERVATIONS,  "name": "FUTURE_RESERVATION_NAME",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {     "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME",    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

    Replace the following:

    • PROJECT_ID: the ID of the project in which you want toreserveresources and where the instance template is located.

    • ZONE: the zone in which to reserve resources.

    • AUTO_DELETE_AUTO_CREATED_RESERVATIONS: if you set thisfield totrue, then Compute Engine automatically deletes theauto-created reservations for this future reservation within two hours fromthe end time of reservation period. If you want to attach your auto-createdreservations to a commitment, then set this field tofalse.

    • CONSUMER_PROJECT_ID_1 andCONSUMER_PROJECT_ID_2: the IDs of projects that thisfuture reservation request can be shared with. You can specify up to 100projects. These projects must be in the same organization as the projectwhere the future reservation request is created (the owner project). Don'tspecify the owner project. By default, it's already allowed to consume theauto-created reservations for this future reservation request.
    • LOCATION: the location of the instance template. Specifyone of the following values:

      • For a regional instance template:regions/REGION. ReplaceREGIONwith the region where the instance template is located. If you specify aregional instance template, then you can only create the futurereservation request within the same region as the template's region.

      • For a global instance template:global.

    • INSTANCE_TEMPLATE_NAME: the name of an existing instancetemplate.

    For example, suppose that you want to create a draft future reservation requestnamedfr-02 inzoneus-central1-a with the following properties:

    • A reservation period that starts at midnight on November 10, 2024 UTC, andends at midnight on December 10, 2024 UTC.

    • A total count of 80 VMs.

    • A regional instance template from regionus-central1.
    • The auto-delete option enabled. The auto-created reservations are deleted atthe end of the reservation period.
    • The future reservation request is shared withproject-1 andproject-2.

    To createfr-02,make aPOST request as follows:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/futureReservations{  "autoDeleteAutoCreatedReservations": true,  "name": "fr-02",  "specificSkuProperties": {     "sourceInstanceTemplate": "projects/example-project/regions/us-central1/instanceTemplates/example-template",    "totalCount": 80  },  "shareSettings": {    "projects": [      "project-1",      "project-2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "timeWindow": {    "startTime": "2024-11-10T00:00:00Z",    "endTime": "2024-12-10T00:00:00Z"  }}

    Optionally, you can do one or more of the following:

    • To specify a name prefix for the auto-created reservations, include thenamePrefix field.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{  "autoDeleteAutoCreatedReservations":AUTO_DELETE_AUTO_CREATED_RESERVATIONS,  "name": "FUTURE_RESERVATION_NAME","namePrefix": "NAME_PREFIX",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {     "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME",    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

      ReplaceNAME_PREFIX with the name prefix for eachauto-created reservation. To help you identify the auto-created reservationsfor this future reservation request, Google Cloud recommends tospecify a unique name prefix.

    • To delete the auto-created reservations after the end time of thereservation period, select one of the following methods:

      • To delete the auto-created reservations after a specific time after theend of your reservation period, set theautoDeleteAutoCreatedReservations totrue and include theautoCreatedReservationsDeleteTime field.

        POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{"autoCreatedReservationsDeleteTime": "DELETE_TIME",  "autoDeleteAutoCreatedReservations": true,  "name": "FUTURE_RESERVATION_NAME",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {     "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME",    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

        ReplaceDELETE_TIME with a date and time whenCompute Engine deletes the auto-created reservations. The dateand time must be formatted as an RFC 3339 timestamp.

      • To delete the auto-created reservations after a specific duration fromthe start time of the reservation period, set theautoDeleteAutoCreatedReservations totrue and include theautoCreatedReservationsDuration field.

        POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{"autoCreatedReservationsDuration": {    "seconds": "DURATION_BEFORE_DELETE"  },  "autoDeleteAutoCreatedReservations": true,  "name": "FUTURE_RESERVATION_NAME",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {     "sourceInstanceTemplate": "projects/PROJECT_ID/LOCATION/instanceTemplates/INSTANCE_TEMPLATE_NAME",    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

        ReplaceDURATION_BEFORE_DELETE with a duration inseconds. For example, specify604800 for 604,800 seconds (7 days).

    After creating a draft future reservation request, you can determine thenumber of VMs that Compute Engine will provision for the request.

    Specify an existing VM

    You can only create a draft future reservation request based on an existing VMin the same project and zone as the VM.

    After the future reservation request is approved by Google Cloud and itenters its reservation period, you can consume its auto-created reservations bycreating VMs with properties that match the reference VM. You can do this bydoing one of the following:

    To create a shared future reservation request that uses the properties of anexisting VM, do the following:

    1. In the Google Cloud console, go to theReservations page.

      Go to Reservations

    2. Click theFuture reservations tab.

    3. ClickCreate future reservation.

      TheCreate a future reservation page opens.

    4. ForName, enter a name for your future reservation request.

    5. ForPrefix, enter a name prefix. The name of each auto-createdreservation from this future reservation request starts with this prefix.

    6. ForRegion andZone, select the region and zone in which to reserveresources.

    7. ForStart time, enter a start time for the reservation period. The starttime can't be later than one year from the date and time at which you submita future reservation request for review. To have sufficient time tooptionally modify, cancel, or delete the future reservation before it entersits lock time, specify arecommended value for the start time.

    8. ForEnd time, enter an end time for the reservation period. In theDuration summary section, you can see the length of the reservationperiod. To increase the likelihood that Google Cloud approves yourfuture reservation request after submitting it for review, specify arecommended value for the reservation period.

    9. In theShare type section, do the following:

      1. To specify a shared future reservation request, selectShared.

      2. ClickAdd projects, and thenselect the projects from the current project's organization that youwant to share the future reservation request with. You can select up to100 projects.

    10. ForTotal capacity needed, enter thetotal countof VMs that you want reserved for the period, VM configuration, and projectsspecified in this future reservation request.

      Important: Verify that you have sufficient quota for the resources thatyou're requesting to reserve. Otherwise, if you submit the futurereservation request for review, Google Cloud declines it.
    11. In theMachine configuration section, do the following:

      1. SelectUse existing VM.

      2. ForExisting VM, select the VM which properties you want to useto create the reservation.

    12. In theAuto-generated reservations auto-delete section, do one ofthe following:

    13. To finish creating the draft future reservation request, clickSave a draft.

    TheReservations page opens. Creating the future reservation request cantake up to a minute to complete.

    After creating a draft future reservation request, you can determine thenumber of VMs that Compute Engine will provision for the request.

    Specify properties directly

    If you want to attach the auto-created reservations provisioned for a futurereservation to a commitment, then you must disable the auto-delete option. Formore information, seeRestrictions after creation.

    To create a shared future reservation request by specifying properties directly,select one of the following options:

    Console

    1. In the Google Cloud console, go to theReservations page.

      Go to Reservations

    2. Click theFuture reservations tab.

    3. ClickCreate future reservation.

      TheCreate a future reservation page opens.

    4. ForName, enter a name for your future reservation request.

    5. ForPrefix, enter a name prefix. The name of each auto-createdreservation from this future reservation request starts with this prefix.

    6. ForRegion andZone, select the region and zone in which to reserveresources.

    7. ForStart time, enter a start time for the reservation period. The starttime can't be later than one year from the date and time at which you submita future reservation request for review. To have sufficient time tooptionally modify, cancel, or delete the future reservation before it entersits lock time, specify arecommended value for the start time.

    8. ForEnd time, enter an end time for the reservation period. In theDuration summary section, you can see the length of the reservationperiod. To increase the likelihood that Google Cloud approves yourfuture reservation request after submitting it for review, specify arecommended value for the reservation period.

    9. In theShare type section, do the following:

      1. To specify a shared future reservation request, selectShared.

      2. ClickAdd projects, and thenselect the projects from the current project's organization that youwant to share the future reservation request with. You can select up to100 projects.

    10. ForTotal capacity needed, enter thetotal countof VMs that you want reserved for the period, VM configuration, and projectsspecified in this future reservation request.

      Important: Verify that you have sufficient quota for the resources thatyou're requesting to reserve. Otherwise, if you submit the futurereservation request for review, Google Cloud declines it.
    11. In theMachine configuration section, do the following:

      1. SelectSpecify machine type if it isn't already selected.

      2. Specify the machine type to use for the reserved VMs.

    12. In theAuto-generated reservations auto-delete section, do one ofthe following:

    13. To finish creating the draft future reservation request, clickSave a draft.

    TheReservations page opens. Creating the future reservation request cantake up to a minute to complete.

    gcloud

    To create asharedfuture reservation request by specifyingproperties directly, use thegcloud compute future-reservations create commandwith the--share-setting=projects and--share-with flags.

    To create a draft future reservation request by specifyingproperties directly without includingany optional flags, and auto-delete the auto-created reservation at the end ofthe reservation period, run the following command:

    gcloud compute future-reservations createFUTURE_RESERVATION_NAME \    --auto-delete-auto-created-reservations \    --machine-type=MACHINE_TYPE \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

    Replace the following:

    • FUTURE_RESERVATION_NAME: the name of the futurereservation request.
    • MACHINE_TYPE: the machine type to use for each reservedVM.
    • CONSUMER_PROJECT_IDS: a comma-separated list of IDs ofprojects that you want to allow to consume the auto-created reservations forthis future reservation request—for example,project-1,project-2.You can specify up to 100 projects. These projects must be in the sameorganization as the project where the future reservation request is created(the owner project). Don't specify the owner project. By default, it'salready allowed to consume the auto-created reservations for this futurereservation request.

    For example, suppose that you want to create a draft future reservation requestnamedfr-02 inzoneus-central1-a with the following properties:

    • A reservation period that starts at midnight on November 10, 2024 UTC, andends at midnight on December 10, 2024 UTC.

    • A total count of 80 VMs.

    • An N2 predefined machine type with 4 vCPUs.
    • The auto-delete option enabled. The auto-created reservations are deleted atthe end of the reservation period.
    • The future reservation request is shared withproject-1 andproject-2.

    To createfr-02,run the following command:

    gcloud compute future-reservations create fr-02 \    --auto-delete-auto-created-reservations \    --machine-type=n2-standard-4 \    --share-setting=projects \    --share-with=project-1,project-2 \    --start-time=2024-11-10T00:00:00Z \    --end-time=2024-12-10T00:00:00Z \    --total-count=80 \    --zone=us-central1-a

    Optionally, you can do one or more of the following:

    • To attach GPUs to your reserved N1 VMs, include the--accelerator flag.

      gcloud compute future-reservations createFUTURE_RESERVATION_NAME \--accelerator=NUMBER_OF_ACCELERATORS,type=ACCELERATOR_TYPE \    --auto-delete-auto-created-reservations \    --machine-type=MACHINE_TYPE \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

      Replace the following:

      • NUMBER_OF_ACCELERATORS: the number of GPUs to add perreserved VM.

      • ACCELERATOR_TYPE: asupported GPU model for N1 VMs. To preventerrors, verify that your chosen GPU model is available in the zone whereyou're creating the future reservation request.

    • To delete the auto-created reservations after the end time of thereservation period, select one of the following methods:

      • To delete the auto-created reservations at a specific date and timeafter the end time of the reservation period, include the--auto-created-reservations-delete-time flag.

        gcloud compute future-reservations createFUTURE_RESERVATION_NAME \--auto-created-reservations-delete-time=AUTO_CREATED_RESERVATIONS_DELETE_TIME \    --auto-delete-auto-created-reservations \    --machine-type=MACHINE_TYPE \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

        ReplaceAUTO_CREATED_RESERVATIONS_DELETE_TIME with adate and time formatted as an RFC 3339 timestamp.

      • To delete the auto-created reservations after a specific duration afterthe end time of the reservation period, include the--auto-created-reservations-duration flag.

        gcloud compute future-reservations createFUTURE_RESERVATION_NAME \--auto-created-reservations-duration=DURATION_BEFORE_DELETE \    --auto-delete-auto-created-reservations \    --machine-type=MACHINE_TYPE \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

        ReplaceDURATION_BEFORE_DELETE with a duration in days,hours, minutes, or seconds. For example, specify30m for 30 minutes,or1d2h3m4s for one day, two hours, three minutes, and four seconds.

    • To disable the auto-delete option for the auto-created reservations, replacethe--auto-delete-auto-created-reservations flag with the--no-auto-delete-auto-created-reservations flag.

      gcloud compute future-reservations createFUTURE_RESERVATION_NAME \--no-auto-delete-auto-created-reservations \    --machine-type=MACHINE_TYPE \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE
    • To attach Local SSD disks to amachine type that doesn't include Local SSD disks by default,include the--local-ssd flag. You can only attach Local SSD disk of375 GB.

      gcloud compute future-reservations createFUTURE_RESERVATION_NAME \    --auto-delete-auto-created-reservations \--local-ssd=count=NUMBER_OF_LOCAL_SSD_DISKS,size=375,interface=INTERFACE_TYPE \    --machine-type=MACHINE_TYPE \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

      Replace the following:

      • NUMBER_OF_LOCAL_SSD_DISKS: the number of Local SSDdisks to attach.

      • INTERFACE_TYPE: the type of disk interface that youwant the Local SSD disks to use and thatyour specified machine type supports.Specify one of the following values:

        • For the NVME disk interface:nvme

        • For the SCSI disk interface:scsi

    • To have the reserved VMs use a specific minimum CPU platform instead of thezone's default CPU platform, include the--min-cpu-platform flag.

      gcloud compute future-reservations createFUTURE_RESERVATION_NAME \    --auto-delete-auto-created-reservations \    --machine-type=MACHINE_TYPE \--min-cpu-platform="MIN_CPU_PLATFORM" \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

      ReplaceMIN_CPU_PLATFORM with a minimum CPU platform. Tomake sure that a CPU platform is available in the zone where you'rereserving resources,view the available CPU platforms by zone.

    • To specify a name prefix for the auto-created reservations, include the--name-prefix flag.

      gcloud compute future-reservations createFUTURE_RESERVATION_NAME \    --auto-delete-auto-created-reservations \    --machine-type=MACHINE_TYPE \--name-prefix=NAME_PREFIX \    --share-setting=projects \    --share-with=CONSUMER_PROJECT_IDS \    --start-time=START_TIME \    --end-time=END_TIME \    --total-count=TOTAL_COUNT \    --zone=ZONE

      ReplaceNAME_PREFIX with the name prefix for eachauto-created reservation. To help you identify the auto-created reservationsfor this future reservation request, Google Cloud recommends tospecify a unique name prefix.

    REST

    To create asharedfuture reservation request by specifyingproperties directly, make aPOST request to thefutureReservations.insert method.

    To create a draft future reservation request by specifyingproperties directly without includingany optional fields, make aPOST request as follows:

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{  "autoDeleteAutoCreatedReservations":AUTO_DELETE_AUTO_CREATED_RESERVATIONS,  "name": "FUTURE_RESERVATION_NAME",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {     "instanceProperties": {      "machineType": "MACHINE_TYPE"    },    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

    Replace the following:

    • PROJECT_ID: the ID of the project in which you want toreserveresources.

    • ZONE: the zone in which to reserve resources.

    • AUTO_DELETE_AUTO_CREATED_RESERVATIONS: if you set thisfield totrue, then Compute Engine automatically deletes theauto-created reservations for this future reservation within two hours fromthe end time of reservation period. If you want to attach your auto-createdreservations to a commitment, then set this field tofalse.

    • CONSUMER_PROJECT_ID_1 andCONSUMER_PROJECT_ID_2: the IDs of projects that thisfuture reservation request can be shared with. You can specify up to 100projects. These projects must be in the same organization as the projectwhere the future reservation request is created (the owner project). Don'tspecify the owner project. By default, it's already allowed to consume theauto-created reservations for this future reservation request.

    For example, suppose that you want to create a draft future reservation requestnamedfr-02 inzoneus-central1-a with the following properties:

    • A reservation period that starts at midnight on November 10, 2024 UTC, andends at midnight on December 10, 2024 UTC.

    • A total count of 80 VMs.

    • An N2 predefined machine type with 4 vCPUs.
    • The auto-delete option enabled. The auto-created reservations are deleted atthe end of the reservation period.
    • The future reservation request is shared withproject-1 andproject-2.

    To createfr-02,make aPOST request as follows:

    POST https://compute.googleapis.com/compute/v1/projects/example-project/zones/us-central1-a/futureReservations{  "autoDeleteAutoCreatedReservations": true,  "name": "fr-02",  "specificSkuProperties": {     "instanceProperties": {      "machineType": "n2-standard-4"    },    "totalCount": 80  },  "shareSettings": {    "projects": [      "project-1",      "project-2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "timeWindow": {    "startTime": "2024-11-10T00:00:00Z",    "endTime": "2024-12-10T00:00:00Z"  }}

    Optionally, you can do one or more of the following:

    • To specify a name prefix for the auto-created reservations, include thenamePrefix field.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{  "autoDeleteAutoCreatedReservations":AUTO_DELETE_AUTO_CREATED_RESERVATIONS,  "name": "FUTURE_RESERVATION_NAME","namePrefix": "NAME_PREFIX",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {     "instanceProperties": {      "machineType": "MACHINE_TYPE"    },    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

      ReplaceNAME_PREFIX with the name prefix for eachauto-created reservation. To help you identify the auto-created reservationsfor this future reservation request, Google Cloud recommends tospecify a unique name prefix.

    • To attach GPUs to your reserved N1 VMs, include theguestAcceleratorsfield.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{  "autoDeleteAutoCreatedReservations":AUTO_DELETE_AUTO_CREATED_RESERVATIONS,  "name": "FUTURE_RESERVATION_NAME",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {    "instanceProperties": {"guestAccelerators": [        {          "acceleratorCount":NUMBER_OF_ACCELERATORS,          "acceleratorType": "ACCELERATOR_TYPE"        }      ],      "machineType": "MACHINE_TYPE"    },    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

      Replace the following:

      • NUMBER_OF_ACCELERATORS: the number of GPUs to add perreserved VM.

      • ACCELERATOR_TYPE: asupported GPU model for N1 VMs. To preventerrors, verify that your chosen GPU model is available in the zone whereyou're creating the future reservation request.

    • To attach Local SSD disks to amachine type that doesn't include Local SSD disks by default,include thelocalSsds field in the request body. You can only attach LocalSSD disks of 375 GB.

      For example, to specify two Local SSD disks when creating a draft futurereservation request, make aPOST request as follows:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{  "autoDeleteAutoCreatedReservations":AUTO_DELETE_AUTO_CREATED_RESERVATIONS,  "name": "FUTURE_RESERVATION_NAME",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {    "instanceProperties": {"localSsds": [        {          "diskSizeGb": "375",          "interface": "INTERFACE_TYPE"        },        {          "diskSizeGb": "375",          "interface": "INTERFACE_TYPE"        }      ],      "machineType": "MACHINE_TYPE"    },    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

      ReplaceINTERFACE_TYPE with the type of disk interfacethat you want the Local SSD disks to use and thatyour specified machine type supports.Specify one of the following values:

      • For the NVME disk interface:NVME

      • For the SCSI disk interface:SCSI

    • To have the reserved VMs use a specific minimum CPU platform instead of thezone's default CPU platform, include theminCpuPlatform.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{  "autoDeleteAutoCreatedReservations":AUTO_DELETE_AUTO_CREATED_RESERVATIONS,  "name": "FUTURE_RESERVATION_NAME",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {    "instanceProperties": {      "machineType": "MACHINE_TYPE","minCpuPlatform": "MINIMUM_CPU_PLATFORM"    },    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

      ReplaceMIN_CPU_PLATFORM with a minimum CPU platform. Toverify that a CPU platform is available in the zone where you're reservingresources,view the available CPU platforms by zone.

    • To delete the auto-created reservations after the end time of thereservation period, select one of the following methods:

      • To delete the auto-created reservations after a specific time after theend of your reservation period, set theautoDeleteAutoCreatedReservations totrue and include theautoCreatedReservationsDeleteTime field.

        POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{"autoCreatedReservationsDeleteTime": "DELETE_TIME",  "autoDeleteAutoCreatedReservations": true,  "name": "FUTURE_RESERVATION_NAME",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {     "instanceProperties": {      "machineType": "MACHINE_TYPE"    },    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

        ReplaceDELETE_TIME with a date and time whenCompute Engine deletes the auto-created reservations. The dateand time must be formatted as an RFC 3339 timestamp.

      • To delete the auto-created reservations after a specific duration fromthe start time of the reservation period, set theautoDeleteAutoCreatedReservations totrue and include theautoCreatedReservationsDuration field.

        POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations{"autoCreatedReservationsDuration": {    "seconds": "DURATION_BEFORE_DELETE"  },  "autoDeleteAutoCreatedReservations": true,  "name": "FUTURE_RESERVATION_NAME",  "shareSettings": {    "projects": [      "CONSUMER_PROJECT_ID_1",      "CONSUMER_PROJECT_ID_2"    ],    "shareType": "SPECIFIC_PROJECTS"  },  "specificSkuProperties": {     "instanceProperties": {      "machineType": "MACHINE_TYPE"    },    "totalCount":TOTAL_COUNT  },  "timeWindow": {    "startTime": "START_TIME",    "endTime": "END_TIME"  }}

        ReplaceDURATION_BEFORE_DELETE with a duration inseconds. For example, specify604800 for 604,800 seconds (7 days).

    After creating a draft future reservation request, you can determine thenumber of VMs that Compute Engine will provision for the request.

    Submit a draft request

    After a future reservation request is submitted, approved by Google Cloud,and past its lock time, you can delete the future reservation and itsauto-created reservations only after the end of the future reservation'sreservation period. Deleting an existing future reservation is useful if youneed to create another future reservation with the same properties. Thus, beforecreating a future reservation request, make sure of the following:

    • Any existing reservations or future reservations in a project restrict theshare settings of the future reservation requests that you can create. Toensure that you can successfully create a future reservation request, andyour request doesn't cause issues in other projects you share futurereservation requests or reservations with, seeRestrictions.

    • You must commit to pay for the reserved resources thatCompute Engine provisions for the entire reservation period,regardless if the auto-created reservations are consumed or not. For moreinformation, seeBilling.

    If you want to modify one or more properties when submitting the draft futurereservation request for review, then seeModify future reservation requestsinstead.

    To submit a draft future reservation request to Google Cloud for review,select one of the following options:

    Console

    1. In the Google Cloud console, go to theReservations page.

      Go to Reservations

    2. Click theFuture reservations tab.

    3. In theName column, click the name of the future reservation requestwith a procurement status ofDrafting. TheFuture reservationspage with the details of the future reservation request appears.

    4. ClickEdit draft. A page toupdate the draft future reservation request appears.

    5. To submit the draft future reservation request for review, clickCreate. TheReservation page appears.

    gcloud

    To submit a draft future reservation request for review, use thegcloud compute future-reservations update commandwith the--planning-status flag set toSUBMITTED.

    gcloud compute future-reservations updateFUTURE_RESERVATION_NAME \    --planning-status=SUBMITTED \    --zone=ZONE

    Replace the following:

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

    • ZONE: the zone where the future reservation requestis located.

    REST

    To submit a draft future reservation request for review, make aPATCHrequest to thefutureReservations.update method.In the request URL, include theupdateMask query parameter set toplanningStatus.

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/futureReservations/FUTURE_RESERVATION_NAME?updateMask=planningStatus{  "name": "FUTURE_RESERVATION_NAME",  "planningStatus": "SUBMITTED"}

    Replace the following:

    • PROJECT_ID: the ID of the project where the futurereservation request is located.

    • ZONE: the zone where the future reservation requestis located.

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

    After you submit a draft future reservation request for review, you can do thefollowing:

    Troubleshoot

    If you run into errors when creating a future reservation request, then see howtotroubleshoot future reservation requests.

    If you still encounter issues after troubleshooting, then contact youraccount team or thesales team.

    What's next

    Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

    Last updated 2025-12-15 UTC.