@@ -474,6 +474,45 @@ def delete_cluster(self, cluster_id=None):
474474 meta_type = cluster_service_pb .DeleteClusterMetadata ,
475475 )
476476
477+ def stop_cluster (self , cluster_id = None , decommission_timeout = 0 ):
478+ """
479+ Stop Yandex.Cloud Data Proc cluster.
480+ :param cluster_id: ID of the cluster to stop.
481+ :type cluster_id: str
482+ :param decommission_timeout: Timeout to gracefully decommission nodes during downscaling. In seconds.
483+ :type decommission_timeout: int
484+ """
485+ cluster_id = cluster_id or self .cluster_id
486+ if not cluster_id :
487+ raise RuntimeError ("Cluster id must be specified." )
488+
489+ request = cluster_service_pb .StopClusterRequest (
490+ cluster_id = cluster_id , decommission_timeout = decommission_timeout
491+ )
492+ return self .sdk .create_operation_and_get_result (
493+ request ,
494+ service = cluster_service_grpc_pb .ClusterServiceStub ,
495+ method_name = "Stop" ,
496+ meta_type = cluster_service_pb .StopClusterMetadata ,
497+ )
498+
499+ def start_cluster (self , cluster_id = None ):
500+ """
501+ Start Yandex.Cloud Data Proc cluster.
502+ :param cluster_id: ID of the cluster to start.
503+ :type cluster_id: str
504+ """
505+ cluster_id = cluster_id or self .cluster_id
506+ if not cluster_id :
507+ raise RuntimeError ("Cluster id must be specified." )
508+ request = cluster_service_pb .StartClusterRequest (cluster_id = cluster_id )
509+ return self .sdk .create_operation_and_get_result (
510+ request ,
511+ service = cluster_service_grpc_pb .ClusterServiceStub ,
512+ method_name = "Start" ,
513+ meta_type = cluster_service_pb .StartClusterMetadata ,
514+ )
515+
477516 def create_hive_job (
478517 self ,
479518 query = None ,
0 commit comments