@@ -474,6 +474,43 @@ 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 (cluster_id = cluster_id , decommission_timeout = decommission_timeout )
490+ return self .sdk .create_operation_and_get_result (
491+ request ,
492+ service = cluster_service_grpc_pb .ClusterServiceStub ,
493+ method_name = "Stop" ,
494+ meta_type = cluster_service_pb .StopClusterMetadata ,
495+ )
496+
497+ def start_cluster (self , cluster_id = None ):
498+ """
499+ Start Yandex.Cloud Data Proc cluster.
500+ :param cluster_id: ID of the cluster to start.
501+ :type cluster_id: str
502+ """
503+ cluster_id = cluster_id or self .cluster_id
504+ if not cluster_id :
505+ raise RuntimeError ("Cluster id must be specified." )
506+ request = cluster_service_pb .StartClusterRequest (cluster_id = cluster_id )
507+ return self .sdk .create_operation_and_get_result (
508+ request ,
509+ service = cluster_service_grpc_pb .ClusterServiceStub ,
510+ method_name = "Start" ,
511+ meta_type = cluster_service_pb .StartClusterMetadata ,
512+ )
513+
477514 def create_hive_job (
478515 self ,
479516 query = None ,
0 commit comments