Update a reservation

Update an existing BigQuery reservation to change its properties, such as its slot capacity.

Code sample

Node.js

Before trying this sample, follow the Node.js setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Node.js API reference documentation.

To authenticate to BigQuery, set up Application Default Credentials. For more information, see Set up authentication for client libraries.

const {ReservationServiceClient} =
  require('@google-cloud/bigquery-reservation').v1;
const {status} = require('@grpc/grpc-js');

const client = new ReservationServiceClient();

/**
 * Updates an existing reservation resource.
 * A reservation is a mechanism used to guarantee slots to users. This sample
 * shows how to change the slot capacity of a reservation.
 * @param {string} projectId Google Cloud project ID. for example 'example-project-id'.
 * @param {string} location Google Cloud location. for example 'us-central1'.
 * @param {string} reservationId ID of the reservation to update. for example 'example-reservation'.
 */
async function updateReservation(
  projectId,
  location = 'us-central1',
  reservationId = 'example-group-reservation',
) {
  const request = {
    reservation: {
      name: client.reservationPath(projectId, location, reservationId),
      slotCapacity: 150,
    },
    updateMask: {
      paths: ['slot_capacity'],
    },
  };

  try {
    const [updatedReservation] = await client.updateReservation(request);
    console.log(`Updated reservation: ${updatedReservation.name}`);
    console.log(`  New slot capacity: ${updatedReservation.slotCapacity}`);
  } catch (err) {
    if (err.code === status.NOT_FOUND) {
      console.log(
        `Reservation "${reservationId}" not found in project "${projectId}" location "${location}".`,
      );
    } else {
      console.error(`Error updating reservation "${reservationId}":`, err);
    }
  }
}

Python

Before trying this sample, follow the Python setup instructions in the BigQuery quickstart using client libraries. For more information, see the BigQuery Python API reference documentation.

To authenticate to BigQuery, set up Application Default Credentials. For more information, see Set up authentication for client libraries.

from google.api_core import exceptions
from google.cloud import bigquery_reservation_v1
from google.protobuf import field_mask_pb2


def update_reservation(project_id: str, location: str, reservation_id: str):
    """Updates a reservation's slot capacity.

    A reservation must exist before it can be updated.

    Args:
        project_id: The Google Cloud project ID.
        location: The geographic location of the reservation, for example, us-central1.
        reservation_id: The ID of the reservation to update.
    """
    client = bigquery_reservation_v1.ReservationServiceClient()

    reservation = bigquery_reservation_v1.types.Reservation()
    reservation.name = client.reservation_path(project_id, location, reservation_id)
    reservation.slot_capacity = 200
    update_mask = field_mask_pb2.FieldMask(paths=["slot_capacity"])

    try:
        updated_reservation = client.update_reservation(
            reservation=reservation, update_mask=update_mask
        )
        print(f"Updated reservation: {updated_reservation.name}")
        print(f"New slot capacity: {updated_reservation.slot_capacity}")
    except exceptions.NotFound:
        print(f"Reservation '{reservation_id}' was not found in location '{location}'.")

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser.