Create shared future reservation requests

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

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

To learn more about the requirements and limitations that you apply when you create a future reservation request, see About future reservation requests.

Before you begin

Required roles

To get the permissions that you need to create shared future reservation requests, ask your administrator to grant you the Compute Future Reservation User (roles/compute.futureReservationUser) 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 create shared future reservation requests. To see the exact permissions that are required, expand the Required permissions section:

Required permissions

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

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

Restrictions

In addition to the general restrictions for future reservations, creating shared future reservation requests has the following restrictions:

Create a draft request

When creating a future reservation request, you can either save the request as a draft and later submit it to Google Cloud for review, or directly submit the request for review. Google recommends creating a draft request first as this lets you determine the number of VMs that Compute Engine will provision for your request instead of manually estimating this number, and optionally modify the number of reserved VMs in the request before submitting it for review.

To consume an auto-created reservation for a future reservation, a VM must have properties that exactly match that reservation. To specify the properties of the VMs that you want to request to reserve by creating a draft future reservation request, use one of the following methods:

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

Specify an instance template

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

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

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

Console

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

    Go to Reservations

  2. Click the Future reservations tab.

  3. Click Create future reservation. The Create a future reservation page appears.

  4. In the Machine configuration section, do the following:

    1. Select Use instance template.

    2. In Instance template list, select the instance template. If you select a regional instance template, then you can only reserve resources within the same region as the template's region.

  5. In the Location section, in the Region and Zone lists, select the region and zone in which to reserve resources.

  6. In the Capacity details section, in the Total capacity needed, enter the total count of VMs that you want to reserve.

  7. In the Reservation period section, do the following:

    1. In the Start time field, specify a start time for the reservation period. The start time can't be later than one year from when you submit your future reservation request for review. To have sufficient time to optionally modify, cancel, or delete the future reservation before it enters its lock time, specify a recommended value for the start time.

    2. In the End time field, specify an end time for the reservation period. In the Duration summary section, you can see the length of the reservation period. To increase the likelihood that Google Cloud approves your future reservation request after you submit it, specify a recommended value for the reservation period.

  8. Click Next.

  9. In the Auto-delete section, do one of the following:

    • To enable Compute Engine to automatically delete the auto-created reservations for your future reservation request, do the following:

      1. Select the Enable auto-delete checkbox.

      2. Optional: In the Auto-delete time field, enter a date and time when to delete the auto-created reservations. The date and time must be after the end time of the reservation period. If you leave this field empty, then Compute Engine deletes the auto-created reservations within two hours after the reservation period's end time.

    • To disable automatic deletion, clear the Enable auto-delete checkbox.

  10. In the Share type section, do the following:

    1. To shared the reserved resources with other projects, select Shared.

    2. Click Add projects, and then select the projects from the current project's organization that you want to share the future reservation request with. You can select up to 100 projects.

  11. Click Next.

  12. In the Future reservation name field, enter a name for your future reservation request.

  13. In the Prefix field, enter a name prefix. All auto-created reservations for this future reservation request use this prefix.

  14. To finish creating the draft future reservation request, click Save a draft. The Reservations page appears. Creating the future reservation request can take up to a minute to complete. To verify when Compute Engine finishes creating it, view your future reservation requests.

gcloud

To create a shared future reservation request by specifying an instance template, use the gcloud compute future-reservations create command with the --share-setting=projects and --share-with flags.

To create a draft future reservation request by specifying an instance template without including any optional flags, and auto-delete the auto-created reservation at the end of the reservation period, run the following command:

gcloud compute future-reservations create FUTURE_RESERVATION_NAME \
    --auto-delete-auto-created-reservations \
    --share-setting=projects \
    --share-with=CONSUMER_PROJECT_IDS \
    --source-instance-template=INSTANCE_TEMPLATE_URL \
    --start-time=START_TIME \
    --end-time=END_TIME \
    --total-count=TOTAL_COUNT \
    --zone=ZONE

Replace the following:

  • FUTURE_RESERVATION_NAME: the name of the future reservation request.
  • CONSUMER_PROJECT_IDS: a comma-separated list of IDs of projects that you want to allow to consume the auto-created reservations for this future reservation request—for example, project-1,project-2. You can specify up to 100 projects. These projects must be in the same organization as the project where the future reservation request is created (the owner project). Don't specify the owner project. By default, it's already allowed to consume the auto-created reservations for this future reservation request.
  • INSTANCE_TEMPLATE_URL: the URL of an existing instance template. Specify one of the following values:

    • For a regional instance template: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • For a global instance template: INSTANCE_TEMPLATE_NAME

  • START_TIME: the start time of the reservation period as an RFC 3339 timestamp, which must be formatted as follows:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    Replace the following:

    • YYYY-MM-DD: a data formatted as a 4-digit year, 2-digit month, and a 2-digit day of the month, separated by hyphens (-).

    • HH:MM:SS: a time formatted as a 2-digit hour using a 24-hour time, 2-digit minutes, and 2-digit seconds, separated by colons (:).

    • OFFSET: the time zone formatted as an offset of Coordinated Universal Time (UTC). For example, to use the Pacific Standard Time (PST), specify -08:00. Alternatively, to use no offset, specify Z.

    The start time can't be later than one year from the date and time at which you submit a future reservation request for review. To have sufficient time to optionally cancel, delete, or modify a future reservation request after it's approved and before it enters its lock time, specify a recommended value for the start time.

  • END_TIME: the end time of the reservation period formatted as an RFC 3339 timestamp. To increase the likelihood that Google Cloud approves your request after submission, specify a minimum reservation period. To specify a duration instead of an end time, replace the --end-time flag with the --duration=END_DURATION flag. Replace END_DURATION with a duration in seconds. For example, specify 1209600 for 1,209,600 seconds (14 days).

    To increase the likelihood that Google Cloud approves a future reservation request after submitting it for review, specify a recommended minimum duration.

  • TOTAL_COUNT: the total count of VMs that you want reserved.

  • ZONE: the zone in which to reserve resources.

For example, suppose that you want to create a draft future reservation request named fr-02 in zone us-central1-a with the following properties:

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

  • A total count of 80 VMs.

  • A regional instance template from region us-central1.
  • The auto-delete option enabled. The auto-created reservations are deleted at the end of the reservation period.
  • The future reservation request is shared with project-1 and project-2.

To create fr-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 the reservation period, select one of the following methods:

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

      gcloud compute future-reservations create FUTURE_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=INSTANCE_TEMPLATE_URL \
          --start-time=START_TIME \
          --end-time=END_TIME \
          --total-count=TOTAL_COUNT \
          --zone=ZONE
      

      Replace AUTO_CREATED_RESERVATIONS_DELETE_TIME with a date and time formatted as an RFC 3339 timestamp.

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

      gcloud compute future-reservations create FUTURE_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=INSTANCE_TEMPLATE_URL \
          --start-time=START_TIME \
          --end-time=END_TIME \
          --total-count=TOTAL_COUNT \
          --zone=ZONE
      

      Replace DURATION_BEFORE_DELETE with a duration in days, hours, minutes, or seconds. For example, specify 30m for 30 minutes, or 1d2h3m4s for one day, two hours, three minutes, and four seconds.

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

    gcloud compute future-reservations create FUTURE_RESERVATION_NAME \
        --no-auto-delete-auto-created-reservations \
        --share-setting=projects \
        --share-with=CONSUMER_PROJECT_IDS \
        --source-instance-template=INSTANCE_TEMPLATE_URL \
        --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 create FUTURE_RESERVATION_NAME \
        --auto-delete-auto-created-reservations \
        --name-prefix=NAME_PREFIX \
        --share-setting=projects \
        --share-with=CONSUMER_PROJECT_IDS \
        --source-instance-template=INSTANCE_TEMPLATE_URL \
        --start-time=START_TIME \
        --end-time=END_TIME \
        --total-count=TOTAL_COUNT \
        --zone=ZONE
    

    Replace NAME_PREFIX with the name prefix for each auto-created reservation. To help you identify the auto-created reservations for this future reservation request, Google Cloud recommends to specify a unique name prefix.

REST

To create a shared future reservation request by specifying an instance template, make a POST request to the futureReservations.insert method.

To create a draft future reservation request by specifying an instance template without including any optional fields, make a POST 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": "INSTANCE_TEMPLATE_URL",
    "totalCount": TOTAL_COUNT
  },
  "timeWindow": {
    "startTime": "START_TIME",
    "endTime": "END_TIME"
  }
}

Replace the following:

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

  • ZONE: the zone in which to reserve resources.

  • AUTO_DELETE_AUTO_CREATED_RESERVATIONS: if you set this field to true, then Compute Engine automatically deletes the auto-created reservations for this future reservation within two hours from the end time of reservation period. If you want to attach your auto-created reservations to a commitment, then set this field to false.

  • CONSUMER_PROJECT_ID_1 and CONSUMER_PROJECT_ID_2: the IDs of projects that this future reservation request can be shared with. You can specify up to 100 projects. These projects must be in the same organization as the project where the future reservation request is created (the owner project). Don't specify the owner project. By default, it's already allowed to consume the auto-created reservations for this future reservation request.
  • INSTANCE_TEMPLATE_URL: the URL of an existing instance template. Specify one of the following values:

    • For a regional instance template: projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_NAME

    • For a global instance template: INSTANCE_TEMPLATE_NAME

  • TOTAL_COUNT: the total count of VMs that you want reserved.

  • START_TIME: the start time of the reservation period as an RFC 3339 timestamp, which must be formatted as follows:

    YYYY-MM-DDTHH:MM:SSOFFSET
    

    Replace the following:

    • YYYY-MM-DD: a data formatted as a 4-digit year, 2-digit month, and a 2-digit day of the month, separated by hyphens (-).

    • HH:MM:SS: a time formatted as a 2-digit hour using a 24-hour time, 2-digit minutes, and 2-digit seconds, separated by colons (:).

    • OFFSET: the time zone formatted as an offset of Coordinated Universal Time (UTC). For example, to use the Pacific Standard Time (PST), specify -08:00. Alternatively, to use no offset, specify Z.

    The start time can't be later than one year from the date and time at which you submit a future reservation request for review. To have sufficient time to optionally cancel, delete, or modify a future reservation request after it's approved and before it enters its lock time, specify a recommended value for the start time.

  • END_TIME: the end time of the reservation period formatted as an RFC 3339 timestamp. To increase the likelihood that Google Cloud approves your request after submission, specify a minimum reservation period. To specify a duration instead of an end time, you can replace the endTime field with the duration field:

    "duration": {
      "seconds": END_DURATION
    }
    

    Replace END_DURATION with a duration in seconds. For example, specify 1209600 for 1,209,600 seconds (14 days).

For example, suppose that you want to create a draft future reservation request named fr-02 in zone us-central1-a with the following properties:

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

  • A total count of 80 VMs.

  • A regional instance template from region us-central1.
  • The auto-delete option enabled. The auto-created reservations are deleted at the end of the reservation period.
  • The future reservation request is shared with project-1 and project-2.

To create fr-02, make a POST 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 the namePrefix 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": "INSTANCE_TEMPLATE_URL",
        "totalCount": TOTAL_COUNT
      },
      "timeWindow": {
        "startTime": "START_TIME",
        "endTime": "END_TIME"
      }
    }
    

    Replace NAME_PREFIX with the name prefix for each auto-created reservation. To help you identify the auto-created reservations for this future reservation request, Google Cloud recommends to specify a unique name prefix.

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

    • To delete the auto-created reservations after a specific time after the end of your reservation period, set the autoDeleteAutoCreatedReservations to true and include the autoCreatedReservationsDeleteTime 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": "INSTANCE_TEMPLATE_URL",
          "totalCount": TOTAL_COUNT
        },
        "timeWindow": {
          "startTime": "START_TIME",
          "endTime": "END_TIME"
        }
      }
      

      Replace DELETE_TIME with a date and time when Compute Engine deletes the auto-created reservations. The date and time must be formatted as an RFC 3339 timestamp.

    • To delete the auto-created reservations after a specific duration from the start time of the reservation period, set the autoDeleteAutoCreatedReservations to true and include the autoCreatedReservationsDuration 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": "INSTANCE_TEMPLATE_URL",
          "totalCount": TOTAL_COUNT
        },
        "timeWindow": {
          "startTime": "START_TIME",
          "endTime": "END_TIME"
        }
      }
      

      Replace DURATION_BEFORE_DELETE with a duration in seconds. For example, specify 604800 for 604,800 seconds (7 days).

After creating a draft future reservation request, you can determine the number 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 VM in the same project and zone as the VM.

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

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

  • In the Google Cloud console, go to the Reservations page.

    Go to Reservations

  • Click the Future reservations tab.

  • Click Create future reservation. The Create a future reservation page appears.

  • In the Machine configuration section, do the following:

    1. Select Use existing VM.

    2. In the Existing VM list, select the VM whose properties you want to use to create the reservation.

  • In the Location section, in the Region and Zone lists, select the region and zone in which to reserve resources.

  • In the Capacity details section, in the Total capacity needed, enter the total count of VMs that you want to reserve.

  • In the Reservation period section, do the following:

    1. In the Start time field, specify a start time for the reservation period. The start time can't be later than one year from when you submit your future reservation request for review. To have sufficient time to optionally modify, cancel, or delete the future reservation before it enters its lock time, specify a recommended value for the start time.

    2. In the End time field, specify an end time for the reservation period. In the Duration summary section, you can see the length of the reservation period. To increase the likelihood that Google Cloud approves your future reservation request after you submit it, specify a recommended value for the reservation period.

  • Click Next.

  • In the Auto-delete section, do one of the following:

  • In the Share type section, do the following:

    1. To shared the reserved resources with other projects, select Shared.

    2. Click Add projects, and then select the projects from the current project's organization that you want to share the future reservation request with. You can select up to 100 projects.

  • Click Next.

  • In the Future reservation name field, enter a name for your future reservation request.

  • In the Prefix field, enter a name prefix. All auto-created reservations for this future reservation request use this prefix.

  • To finish creating the draft future reservation request, click Save a draft. The Reservations page appears. Creating the future reservation request can take up to a minute to complete. To verify when Compute Engine finishes creating it, view your future reservation requests.

  • After creating a draft future reservation request, you can determine the number 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 future reservation to a commitment, then you must disable the auto-delete option. For more information, see Restrictions after creation.

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

    Console

  • In the Google Cloud console, go to the Reservations page.

    Go to Reservations

  • Click the Future reservations tab.

  • Click Create future reservation. The Create a future reservation page appears.

  • In the Machine configuration section, do the following:

    1. Select Specify machine type if it isn't already selected.

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

  • In the Location section, in the Region and Zone lists, select the region and zone in which to reserve resources.

  • In the Capacity details section, in the Total capacity needed, enter the total count of VMs that you want to reserve.

  • In the Reservation period section, do the following:

    1. In the Start time field, specify a start time for the reservation period. The start time can't be later than one year from when you submit your future reservation request for review. To have sufficient time to optionally modify, cancel, or delete the future reservation before it enters its lock time, specify a recommended value for the start time.

    2. In the End time field, specify an end time for the reservation period. In the Duration summary section, you can see the length of the reservation period. To increase the likelihood that Google Cloud approves your future reservation request after you submit it, specify a recommended value for the reservation period.

  • Click Next.

  • In the Auto-delete section, do one of the following:

  • In the Share type section, do the following:

    1. To shared the reserved resources with other projects, select Shared.

    2. Click Add projects, and then select the projects from the current project's organization that you want to share the future reservation request with. You can select up to 100 projects.

  • Click Next.

  • In the Future reservation name field, enter a name for your future reservation request.

  • In the Prefix field, enter a name prefix. All auto-created reservations for this future reservation request use this prefix.

  • To finish creating the draft future reservation request, click Save a draft. The Reservations page appears. Creating the future reservation request can take up to a minute to complete. To verify when Compute Engine finishes creating it, view your future reservation requests.

  • gcloud

    To create a shared future reservation request by specifying properties directly, use the gcloud compute future-reservations create command with the --share-setting=projects and --share-with flags.

    To create a draft future reservation request by specifying properties directly without including any optional flags, and auto-delete the auto-created reservation at the end of the reservation period, run the following command:

    gcloud compute future-reservations create FUTURE_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:

    For example, suppose that you want to create a draft future reservation request named fr-02 in zone us-central1-a with the following properties:

    To create fr-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:

    REST

    To create a shared future reservation request by specifying properties directly, make a POST request to the futureReservations.insert method.

    To create a draft future reservation request by specifying properties directly without including any optional fields, make a POST 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:

    For example, suppose that you want to create a draft future reservation request named fr-02 in zone us-central1-a with the following properties:

    To create fr-02, make a POST 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:

    After creating a draft future reservation request, you can determine the number 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 its auto-created reservations only after the end of the future reservation's reservation period. Deleting an existing future reservation is useful if you need to create another future reservation with the same properties. Thus, before creating a future reservation request, make sure of the following:

    If you want to modify one or more properties when submitting the draft future reservation request for review, then see Modify future reservation requests instead.

    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 the Reservations page.

      Go to Reservations

    2. Click the Future reservations tab.

    3. In the Name column, click the name of the future reservation request with a procurement status of Drafting. The Future reservations page with the details of the future reservation request appears.

    4. Click Edit draft. A page to update the draft future reservation request appears.

    5. To submit the draft future reservation request for review, click Create. The Reservation page appears.

    gcloud

    To submit a draft future reservation request for review, use the gcloud compute future-reservations update command with the --planning-status flag set to SUBMITTED.

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

    Replace the following:

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

    • ZONE: the zone where the future reservation request is located.

    REST

    To submit a draft future reservation request for review, make a PATCH request to the futureReservations.update method. In the request URL, include the updateMask query parameter set to planningStatus.

    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 future reservation request is located.

    • ZONE: the zone where the future reservation request is located.

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

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

    Troubleshoot

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

    If you still encounter issues after troubleshooting, then contact your account team or the sales team.

    What's next