class_docstr: Google Kubernetes Engine cluster APIs.
  
  All the methods in the hook where project_id is used must be called with
  keyword arguments rather than positional.
class_docstr_tok: ["Google","Kubernetes","Engine","cluster","APIs",".","All","the","methods","in","the","hook","where","project_id","is","used","must","be","called","with","keyword","arguments","rather","than","positional","."]
docstr: Get an operation from Google Cloud.
  
  :param operation_name: Name of operation to fetch
  :param project_id: Google Cloud project ID
  :return: The new, updated operation from Google Cloud
docstr_tok: ["Get","an","operation","from","Google","Cloud",".",":","param","operation_name",":","Name","of","operation","to","fetch",":","param","project_id",":","Google","Cloud","project","ID",":","return",":","The","new",",","updated","operation","from","Google","Cloud"]
code: def get_operation(
      self, operation_name: str, project_id: str | None = None
  ) -> Operation:
      """Get an operation from Google Cloud.
  
      :param operation_name: Name of operation to fetch
      :param project_id: Google Cloud project ID
      :return: The new, updated operation from Google Cloud
      """
      return self.get_cluster_manager_client().get_operation(
          name=(
              f"projects/{project_id or self.project_id}"
              f"/locations/{self.location}/operations/{operation_name}"
          )
      )
  
imports: from __future__ import annotations
  import contextlib
  import json
  import time
  import warnings
  from functools import cached_property
  from typing import TYPE_CHECKING, Sequence
  from gcloud.aio.auth import Token
  from google.api_core.exceptions import NotFound
  from google.api_core.gapic_v1.method import DEFAULT, _MethodDefault
  from google.auth.transport import requests
  from google.cloud import container_v1, exceptions
  from google.cloud.container_v1 import ClusterManagerAsyncClient, ClusterManagerClient
  from google.cloud.container_v1.types import Cluster, Operation
  from kubernetes import client
  from kubernetes_asyncio import client
  from kubernetes_asyncio.config.kube_config import FileOrData
  from urllib3.exceptions import HTTPError
  from airflow import version
  from airflow.exceptions import AirflowException, AirflowProviderDeprecationWarning
  from airflow.providers.cncf.kubernetes.utils.pod_manager import PodOperatorHookProtocol
  from airflow.providers.google.common.consts import CLIENT_INFO
  from airflow.providers.google.common.hooks.base_google import PROVIDE_PROJECT_ID, GoogleBaseAsyncHook, GoogleBaseHook
label_desc: Use image node_id 6 for calling the GKEHook obj's underlying member method code with example usage: obj.get_operation(operation_name, project_id) and returns: self