Extend the term length of commitments


This document provides information about extending the term length of your Compute Engine hardware resource-based commitments beyond the preset 1- and 3-year options.

Term extensions give you the flexibility to extend a commitment's term length beyond the preset 1 or 3 years and specify a custom term length of your choice—for example, 2, 3.5, or 5.5 years. By extending your commitment's term, you can tailor your commitment's length to match your resource usage needs and keep receiving the resulting committed use discounts (CUDs) for that longer and custom time period. You can extend the term lengths of both 1-year and 3-year commitments as follows:

  • 1-year commitments: You can specify custom term lengths that are greater than 1 year and less than 3 years.
  • 3-year commitments: You can specify custom term lengths that are greater than 3 years and less than 6 years.

For other ways to keep your commitments active for a longer duration, see the following alternatives:

How term extension works

You can extend your commitment's term length and set a custom term length by specifying a future end date of your choice for that commitment's term. Your commitment then becomes a custom term commitment. For 1-year commitments, the custom end date can be anywhere between 1 and 3 years (but can't be exactly 3 years) after the start date of the ongoing term. For 3-year commitments, the custom end date can be anywhere between 3 and 6 years (but can't be exactly 6 years) after the start date of the ongoing term.

You can perform a term extension for both new and existing commitments as follows:

After you place a term extension request for your commitment, the changes take effect at 12 AM US and Canadian Pacific Time (UTC-8, or UTC-7 during daylight saving time) on the following day. Your commitment remains active until the new custom end date and its term length gets adjusted accordingly. Extending your commitment's term length doesn't affect the other properties of the commitment:

  • Name
  • Start date
  • Region
  • Project
  • Commitment type
  • Commitment plan
  • Auto renew status
  • Committed resources

Extending your commitment's term length doesn't change the CUD percentage that you receive in return for that commitment.

Any reservations that are attached to your commitment continue to exist throughout the lifetime of your extended term, unless you manually replace them.

Term extension eligibility window

After a commitment's term begins, you have a limited time period during which you can request for a term length extension. This time period is called the term extension eligibility window.

For commitments of both preset and custom term lengths, the term extension eligibility window depends on the most recent operation that you performed on a commitment and behaves in the following ways:

  • Newly purchased commitments: For 1-year commitments, the eligibility window remains open up to 4 months after the commitment activation. For 3-year commitments, the eligibility window remains open up to 1 year after the commitment activation.

  • Auto-renewed commitments: If your commitment automatically renews for a new term, then the eligibility window refreshes at the start of the renewed term. For 1-year commitments, the eligibility window remains open up to 4 months from the start of the renewed term. For 3-year commitments, the eligibility window remains open up to 1 year from the start of the renewed term.

  • Merged commitments: If you merge commitments that have different eligibility windows, then, for the merged commitment, Compute Engine uses the eligibility window that ends the earliest.

  • Split commitments: When you split a commitment, the eligibility window remains the same for both the resized source commitment and the new split commitment.

  • Upgraded commitments: When you upgrade a 1-year commitment into a 3-year commitment, Compute Engine also updates the eligibility window for the commitment. The updated window remains open up to 1 year from the start of the ongoing term.

    For example, suppose that your 1-year commitment's start date is January 1, 2024. The eligibility window for your original 1-year term remains open until May 1, 2024. Suppose that you then upgraded this commitment to a 3-year commitment on April 1, 2024. After the term upgrade, your commitment's updated eligibility window remains open until January 1, 2025.

Performing multiple term extensions

You can extend the term length of your commitment any number of times within the term extension eligibility window. On any given day, for any given active commitment, you can place multiple term extension requests until 12 AM US and Canadian Pacific Time (UTC-8 or UTC-7) of the next day, as long as you specify a later end date each time. However, Google recommends that you minimize the number of term extension requests that you place for a single commitment on a given day.

After your term extension for a specific end date takes effect and your commitment has a new custom end date, you can't undo the term extension or reduce your commitment's term length. You can perform subsequent extension operations only for end dates that are later than the most recently specified end date.

Impact of pending commitment update requests

For existing, active commitments that already have a pending update request, you can place a new term extension request only if the pending request is also for a term extension. If the commitments have any pending update request—such as merge, split, term upgrade, or auto-renewal setting update—then, to request term extensions, you must wait for the pending operations to complete and the updates to take effect. After the midnight of the following day, when the updates take effect, you can request for a term extension for that commitment.

Pricing implications

Your commitment fee is the sum of the discounted prices of all your committed resources. When you extend your commitment's term length, the discounted prices of your resources stay the same for the entirety of your custom term length, even if the on-demand prices change. For more information about resource prices, see Compute Engine pricing

Quota considerations

To specify a custom end date while purchasing a commitment, you must have sufficient quota available both for the commitment and the committed resources. To specify a custom end date for an existing commitment, you don't typically need to request any additional quota.

How term extension affects future commitment operations

If your commitment has a custom term length, then performing any subsequent commitment management operations on your custom term commitment might affect its custom end date and eligibility window. The following sections explain how a custom term commitment behaves during other commitment operations:

Auto-renewing custom term commitments

The renewed term length of an automatically renewing commitment always matches the preset term length defined by the commitment's plan, which is either 1 year or 3 years. You also receive the same discount percentage. Even if your commitment has a custom term length, Compute Engine renews your commitment only for its preset term length of either 1 or 3 years. Auto-renewal of a custom term commitment won't be for another term of that custom length. For examples, see the following:

  • A commitment with a custom term of 1.5 years will renew only for 1 additional year.
  • A commitment with a custom term of 5.5 years will renew only for 3 additional years.

If you want a custom term commitment to stay active for a longer time period than the renewed term, then you can request for another term extension after its renewal. Your term extension eligibility window also gets refreshed at the start of your renewed term. For a 1-year commitment, the eligibility window during the renewed term remains open for up to 4 months after the renewal. For 3-year commitments, this window remains open for up to 1 year after the renewal.

For example, suppose that your 1-year commitment's start date was January 1, 2024. You extend the term of this commitment and specify a custom end date of June 30, 2025. If you also enabled auto-renewal on your commitment, then, on July 1, 2025, your commitment gets renewed for another term of 1 year. The end date of the renewed term will be June 30, 2026. The term extension eligibility window during that renewed term remains open until November 1, 2025.

For more information about auto-renewal of commitments, see Renew commitments automatically.

Merging custom term commitments

Merging commitments that have custom term lengths works the same way as commitments that have preset term lengths. The merged commitment inherits the following properties:

  • The end date that is furthest in the future among the source commitments, regardless of whether it's a custom end date or not.
  • The eligibility window that ends the earliest among the source commitments.

For example, suppose you want to merge two custom term 1-year commitments. The first commitment has a start date of January 1, 2024, and has a custom end date of June 30, 2025. The eligibility window for the first commitment remains open until May 1, 2024. The second commitment has a start date of February 1, 2024, and a custom end date of July 30, 2025. The eligibility window for the second commitment remains open until June 1, 2024. If you merge these commitments on April 1, 2024, then the merged commitment inherits July 30, 2025 as its end date. The eligibility window for the merged commitment remains open until May 1, 2024.

For more information about merging commitments, see Merging commitments.

Splitting custom term commitments

Splitting commitments that have custom term length works the same way as commitments that have preset term lengths. The resized source commitment and the new split commitments retain the same custom end date and term extension eligibility window.

For example, suppose that your 1-year commitment's start date is January 1, 2024, and has a custom end date of June 30, 2025. The eligibility window for your commitment remains open until May 1, 2024. Suppose that on March 1, 2024, you split this commitment into two separate commitments. The newly split commitments inherit the custom end date of June 30, 2025, and their eligibility windows remain open until May 1, 2024.

For more information about splitting commitments, see Splitting commitments.

Upgrading custom term commitments

Upgrade of 1-year commitments that have a custom term length works the same way as commitments that have the preset term length. After the upgrade, Compute Engine moves the end date of the commitment's ongoing term by two years into the future.

For example, suppose that your 1-year commitment has a start date of January 1, 2024, and has a custom end date of June 30, 2025. The eligibility window for your original 1-year term remains open until May 1, 2024. Suppose that you then upgraded this commitment to a 3-year commitment on April 1, 2024. After the term upgrade, your commitment becomes a 3-year commitment that has an end date of June 30, 2027. The commitment's updated eligibility window remains open until January 1, 2025. You also start receiving the CUD percentage that is applicable for the 3-year commitment.

For more information about upgrading commitments, see Upgrade the term of commitments.

Limitations

The following limitations apply to term extensions of resource-based commitments:

  • You can extend the term lengths of only hardware resource commitments.
  • You can't extend the term lengths of inactive or expired commitments.
  • You can't extend the term lengths of a 3-year commitment by a full 3 years. Instead, consider enabling auto-renewal on your commitment.
  • You can renew custom term commitments only for the preset term length defined by their commitment plans, which is either 1 or 3 years.
  • For existing active commitments that already have a pending commitment update request, you can place a new term extension request only if the pending request is also for a term extension. If the commitments have any other pending update request—such as merge, split, term upgrade, or auto-renewal setting update—then, to request term extensions, you must wait until after midnight of the following day for the pending operations to complete and the updates to take effect.

Requirements

You must meet the following requirements to successfully extend the term length of a commitment:

  • The term extension request must be placed during the term extension eligibility window for the commitment.
  • For 1-year commitments, the custom end date must be between 1 and 3 years (but can't be exactly 3 years) into the future from the start date of the ongoing term.
  • For 3-year commitments, the custom end date must be between 3 and 6 years (but can't be exactly 6 years) into the future from the start date of the ongoing term.
  • You mustn't have any other ongoing or pending merge, split, upgrade, or renewal operations for that commitment.

Best practices

Google recommends that you follow these best practices when you extend a commitment's term length:

  • Before you place a term extension request, wait for all other pending commitment operations to complete and the updates to take effect.
  • Minimize the number of term extension requests that you place for a single commitment on the same day.

Extend the term length during commitment purchase

When you purchase a commitment, you can specify a custom end date to extend the preset 1- or 3-year term length.

To extend the term length of a commitment while purchasing it, use one of the following options:

Console

Before you purchase your commitment, in the Google Cloud console, select the project that you want to use to purchase the commitment. If CUD sharing is enabled for a Cloud Billing account, you can purchase the commitment using any project from that Cloud Billing account.

  1. In the Google Cloud console, go to the Committed use discounts page.

    Go to Committed use discounts

    The Commitment list page opens and displays the Hardware commitments tab.

  2. Click Purchase commitment.

    The Purchase a committed use discount page opens and displays the Hardware tab.

  3. In the Name field, enter a name for your commitment.

  4. In the Region field, select the region where you want to commit to purchasing Compute Engine resources.

  5. In the Commitment type field, select the machine family series for your committed resources. The following commitment type options are available:

    • Accelerator-optimized A2 for A2 machine type resources
    • Accelerator-optimized A3 for A3 High machine type resources
    • Accelerator-optimized A3 Mega for A3 Mega machine type resources
    • Compute-optimized C2 for C2 machine type resources
    • Compute-optimized C2D for C2D machine type resources
    • Compute-optimized H3 for H3 machine type resources
    • General-Purpose C3 for C3 machine type resources
    • General-Purpose C3D for C3D machine type resources
    • General-Purpose C4 for C4 machine type resources
    • General-Purpose E2 for E2 machine type resources
    • General-Purpose N1 for N1 machine type resources
    • General-Purpose N2 for N2 machine type resources
    • General-Purpose N2D for N2D machine resources
    • General-Purpose N4 for N4 machine type resources
    • General-Purpose T2D for Tau T2D machine type resources
    • Graphics-optimized G2 for G2 machine type resources
    • Memory-optimized M1/M2 for M1 or M2 machine type resources
    • Memory-optimized M3 forM3 machine type resources
    • Storage-optimized Z3 for Z3 machine type resources

  6. In the Duration section, do the following:

    1. To specify your commitment's preset term length, select either 1 year or 3 years.
    2. To specify a custom end date for your commitment, click the Extend end date toggle, and then, in the Date field, specify a custom end date.
  7. In the Cores field, enter the number of vCPUs that you want to commit to purchasing.

  8. In the Memory field, enter the amount, in GB, of memory that you want to commit to purchasing.

  9. To commit to purchasing GPUs, in the GPUs section, click Add GPU, and then do the following:

    1. In the GPU type field, select the type of GPU.
    2. In the Number of GPUs field, enter the number of GPUs.
    3. Optional: If your GPU model supports NVIDIA RTX Virtual Workstations (vWS) for graphics workloads, and you plan to run graphics-intensive workloads, select the Enable Virtual Workstation (NVIDIA GRID) checkbox.
  10. To commit to purchasing Local SSD disks, in the Local SSDs section, click add Add SSD, and then, in the Number of SSDs field, specify the number of disks.

  11. If you specified any GPUs or Local SSD disks in your commitment, then attach matching reservations for those resources in one of the following ways. Repeat this step for every new reservation that you want to attach.

    1. To attach one or more existing reservations to the commitment, in the Reservations field, select Attach existing reservations, and then follow the steps listed in the Attach existing reservations section.
    2. To create a new reservation and attach it to the commitment, in the Reservations field, select Create reservations, and then follow the steps listed in the Create new reservations to attach section.
  12. To finish purchasing your commitment, do the following:

    1. Click Purchase.
    2. In the Purchase a committed use discount dialog, if you agree with the service specific terms, click Purchase again.

gcloud

To purchase a commitment with a custom and extended term, run the gcloud compute commitments create command and include the --custom-end-time flag.

For example, to purchase a commitment for vCPUs, memory, or both, use the following command:

gcloud compute commitments create COMMITMENT_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --plan=COMMITMENT_PLAN \
    --type=COMMITMENT_TYPE \
    --resources=vcpu=NUMBER_VCPUS,memory=MEMORY \
    --custom-end-time=CUSTOM_END_DATE

Replace the following:

  • COMMITMENT_NAME: the name of the commitment
  • REGION: the region of the commitment and where you want to commit to purchasing Compute Engine resources.
  • PROJECT_ID: the ID of the project
  • COMMITMENT_PLAN: the minimum preset term length for which you want to commit to purchasing resources. Specify one of the following values:

    • For a 1-year commitment: 12-month
    • For a 3-year commitment: 36-month.
  • COMMITMENT_TYPE: the machine series for which you want to commit to purchasing resources. The following options are available:

    • accelerator-optimized for A2 machine type resources
    • accelerator-optimized-a3 for A3 High machine type resources
    • accelerator-optimized-a3-mega for A3 Mega machine type resources
    • compute-optimized for C2 machine type resources
    • compute-optimized-c2d for C2D machine type resources
    • compute-optimized-c3 for C3 machine type resources
    • compute-optimized-c3d for C3D machine type resources
    • compute-optimized-h3 for H3 machine type resources
    • general-purpose for N1 machine type resources
    • general-purpose-c4 for C4 machine type resources
    • general-purpose-e2 for E2 machine type resources
    • general-purpose-n2 for N2 machine type resources
    • general-purpose-n2d for N2D machine resources
    • general-purpose-n4 for N4 machine type resources
    • general-purpose-t2d for Tau T2D machine type resources
    • graphics-optimized for G2 machine type resources
    • memory-optimized for M1 or M2 machine type resources
    • memory-optimized-m3 for M3 machine type resources
    • storage-optimized-z3 for Z3 machine type resources

    If you don't specify the --type flag, then Compute Engine uses general-purpose as the default value.

  • NUMBER_VCPUS: the number of vCPUs that you want to commit to purchasing.

  • MEMORY: the amount, in MB or GB, of memory you want to commit to purchasing—for example, 1000MB or 100GB. If you don't specify the units, then Compute Engine uses GB as the default unit. You can specify this value in increments of 0.25 GB.

  • CUSTOM_END_DATE: the custom end date for your term, which must be formatted as YYYY-MM-DD. For example, to specify a custom end date of April 20, 2024, format it as 2024-04-20.

For detailed syntax of how to extend the term length while purchasing a commitment for GPUs, local SSD disks, or both, see Purchase commitments with attached reservations.

For example, consider a 1-year commitment called example-commitment for 4 N1 vCPUs and 9 GB memory in the us-central1 region. Suppose that you want to purchase this commitment on January 1, 2024, and want a custom term that ends at the end of June 30, 2025. To purchase this commitment, run the following command:

gcloud compute commitments create example-commitment \
    --region=us-central1 \
    --project=my-project
    --plan=12-month \
    --type=general-purpose
    --resources=memory=9GB,vcpu=4 \
    --custom-end-time=2025-07-01

REST

To purchase a commitment with a custom and extended term, make a POST request to the regionCommitments.insert method. In the request body, include the customEndTimestamp field.

For example, to purchase a commitment for vCPUs, memory, or both, use the following POST request body:

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments
{
    "name": "COMMITMENT_NAME",
    "plan": "COMMITMENT_PLAN",
    "type": "COMMITMENT_TYPE",
    "resources":
    [
        {
            "amount": "NUMBER_VCPUS",
            "type": "VCPU"
        },
        {
            "amount": "MEMORY",
            "type": "MEMORY"
        },
    ],
    "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
}

Replace the following:

  • COMMITMENT_NAME: the name of the commitment
  • REGION: the region of the commitment and where you want to commit to purchasing Compute Engine resources.
  • PROJECT_ID: the ID of the project
  • COMMITMENT_PLAN: the minimum preset term length for which you want to commit to purchasing resources. Specify one of the following values:

    • For a 1-year commitment: TWELVE_MONTH
    • For a 3-year commitment: THIRTY_SIX_MONTH.
  • COMMITMENT_TYPE: the machine series for which you want to commit to purchasing resources. The following options are available:

    • ACCELERATOR_OPTIMIZED for A2 machine type resources
    • ACCELERATOR_OPTIMIZED_A3 for A3 High machine type resources
    • ACCELERATOR_OPTIMIZED_A3_MEGA for A3 Mega machine type resources
    • COMPUTE_OPTIMIZED for C2 machine type resources
    • COMPUTE_OPTIMIZED_C2D for C2D machine type resources
    • COMPUTE_OPTIMIZED_C3 for C3 machine type resources
    • COMPUTE_OPTIMIZED_C3D for C3D machine type resources
    • COMPUTE_OPTIMIZED_H3 for H3 machine type resources
    • GENERAL_PURPOSE for N1 machine type resources
    • GENERAL_PURPOSE_C4 for C4 machine type resources
    • GENERAL_PURPOSE_E2 for E2 machine type resources
    • GENERAL_PURPOSE_N2 for N2 machine type resources
    • GENERAL_PURPOSE_N2D for N2D machine resources
    • GENERAL_PURPOSE_N4 for N4 machine type resources
    • GENERAL_PURPOSE_T2D for Tau T2D machine type resources
    • GRAPHICS_OPTIMIZED for G2 machine type resources
    • MEMORY_OPTIMIZED for M1 or M2 machine type resources
    • MEMORY_OPTIMIZED_M3 for M3 machine type resources
    • STORAGE_OPTIMIZED_Z3 for Z3 machine type resources

  • NUMBER_VCPUS: the number of vCPUs that you want to commit to purchasing.

  • MEMORY: the amount, in MB, of memory that you want to commit to purchasing—for example, 10240MB. You can specify this value in increments of 256 MB.

  • CUSTOM_END_DATE: the custom end date for your term, which must be formatted as YYYY-MM-DD. For example, to specify a custom end date of April 20, 2024, format it as 2024-04-20.

  • END_TIME: 12 AM US and Canadian Pacific Time (UTC-8 or UTC-7), as an offset of Coordinated Universal Time (UTC). Specify one of the following values:

    • During daylight saving time: 07:00:00
    • During other times: 08:00:00

For detailed syntax of how to extend the term length while purchasing a commitment for GPUs, local SSD disks, or both, see Purchase commitments with attached reservations.

For example, consider a 1-year commitment called example-commitment for 4 N1 vCPUs and 9 GB memory in the us-central1 region. Suppose that you want to purchase this commitment on January 1, 2024, and want a custom term that ends at the end of June 30, 2025. To purchase this commitment, make the following request:

POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments
{
    "name": "example-commitment",
    "plan": "TWELVE_MONTH",
    "type": "GENERAL_PURPOSE",
    "resources":
    [
        {
            "amount": "4",
            "type": "VCPU"
        },
        {
            "amount": "9216",
            "type": "MEMORY"
        },
    ],
    "customEndTimestamp": "2025-07-01T07:00:00Z",
}

Extend the term length of an existing commitment

You can extend the length of the existing, active commitment's ongoing term by updating the commitment's properties to specify or update the custom end date.

To extend the term length of an existing commitment, use one of the following options:

Console

Before you initiate the term extension operation, on the Google Cloud console, select the project where you want to extend your commitment's term.

  1. In the Google Cloud console, go to the Committed use discounts page.

    Go to Committed use discounts

    The Commitment list page opens and displays the Hardware commitments tab.

  2. To initiate the term extension operation for a commitment, on the Hardware commitments tab, select an active commitment, and then click Extend.

    Alternatively, you can do the following:

    1. On the Hardware commitments tab of the Commitment list page, click the name of the active commitment that you want to extend.
    2. On the Hardware commitment details page for the selected commitment, click Extend.

    The Extend pane appears for the selected commitment.

  3. To complete the term extension operation, in the Extend pane for the commitment, do the following:

    1. Review your Commitment details.
    2. In the Select an end date field, specify a custom end date for your commitment.
    3. In the Commitment timeline section, review the New end date field.
    4. To confirm the term extension request, click Extend.

gcloud

To extend the term length of an existing active commitment, run the gcloud compute commitments update command and include the --custom-end-time flag.

gcloud compute commitments update COMMITMENT_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --custom-end-time=CUSTOM_END_DATE

Replace the following:

  • COMMITMENT_NAME: the name of the commitment
  • PROJECT_ID: the ID of the project
  • REGION: the region of the commitment and where you want to commit to purchasing Compute Engine resources.
  • CUSTOM_END_DATE: the custom end date that you want for your term, in the YYYY-MM-DD format, where YYYY is the year, MM is the month, and DD is the day. For example, to specify a custom end date of April 20, 2024, format it as 2024-04-20.

For example, consider the 1-year custom term commitment, example-commitment, that was purchased for 4 N1 vCPUs and 9 GB memory in the us-central1 region. This commitment was purchased on January 1, 2024, and expires on June 30, 2025. To extend its term length further until the end of June 30, 2026, run the following command:

gcloud compute commitments update example-commitment \
    --region=us-central1 \
    --project=my-project \
    --custom-end-time=2026-07-01

REST

To extend the term length of an existing active commitment, make a PATCH request to the regionCommitments.update method. In the request body, include the customEndTimestamp field.

PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/commitments/COMMITMENT_NAME
{
    "name": "COMMITMENT_NAME",
    "customEndTimestamp": "CUSTOM_END_DATETEND_TIMEZ",
}

Replace the following:

  • COMMITMENT_NAME: the name of the commitment
  • REGION: the region of the commitment and where you want to commit to purchasing Compute Engine resources.
  • PROJECT_ID: the ID of the project
  • CUSTOM_END_DATE: the custom end date that you want for your term, in the YYYY-MM-DD format, where YYYY is the year, MM is the month, and DD is the day. For example, to specify a custom end date of April 20, 2024, format it as 2024-04-20.
  • END_TIME: 12 AM US and Canadian Pacific Time (UTC-8 or UTC-7), as an offset of Coordinated Universal Time (UTC). Specify one of the following values:

    • During daylight saving time: 07:00:00
    • During other times: 08:00:00

For example, consider the 1-year custom term commitment, example-commitment, that was purchased for 4 N1 vCPUs and 9 GB memory in the us-central1 region. This commitment was purchased on January 1, 2024, and expires on June 30, 2025. To extend its term length further until the end of June 30, 2026, make the following request:

PATCH https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/commitments/example-commitment
{
    "name": "example-commitment",
    "customEndTimestamp": "2026-07-01T07:00:00Z",
}

What's next