def undelete(self): """Undelete this cluster. Cancels the scheduled deletion of an cluster and begins preparing it to resume serving. The returned operation will also be embedded as the cluster's ``current_operation``. Immediately upon completion of this request: * The cluster's ``delete_time`` field will be unset, protecting it from automatic deletion. Until completion of the returned operation: * The operation cannot be cancelled. Upon completion of the returned operation: * Billing for the cluster's resources will resume. * All tables within the cluster will be available. :rtype: :class:`Operation` :returns: The long-running operation corresponding to the undelete operation. """ request_pb = messages_pb2.UndeleteClusterRequest(name=self.name) # We expect a `google.longrunning.operations_pb2.Operation`. operation_pb2 = self._client._cluster_stub.UndeleteCluster( request_pb, self._client.timeout_seconds) op_id, op_begin = _process_operation(operation_pb2) return Operation('undelete', op_id, op_begin, cluster=self)
def test_undelete(self): from google.longrunning import operations_pb2 from gcloud._testing import _Monkey from gcloud.bigtable._generated import ( bigtable_cluster_service_messages_pb2 as messages_pb2) from gcloud.bigtable._testing import _FakeStub from gcloud.bigtable import cluster as MUT project = 'PROJECT' zone = 'zone' cluster_id = 'cluster-id' timeout_seconds = 78 client = _Client(project, timeout_seconds=timeout_seconds) cluster = self._makeOne(zone, cluster_id, client) # Create request_pb cluster_name = ('projects/' + project + '/zones/' + zone + '/clusters/' + cluster_id) request_pb = messages_pb2.UndeleteClusterRequest(name=cluster_name) # Create response_pb response_pb = operations_pb2.Operation() # Patch the stub used by the API method. client._cluster_stub = stub = _FakeStub(response_pb) # Create expected_result. op_id = 5678 op_begin = object() expected_result = MUT.Operation('undelete', op_id, op_begin, cluster=cluster) # Create the mocks. process_operation_called = [] def mock_process_operation(operation_pb): process_operation_called.append(operation_pb) return op_id, op_begin # Perform the method and check the result. with _Monkey(MUT, _process_operation=mock_process_operation): result = cluster.undelete() self.assertEqual(result, expected_result) self.assertEqual(stub.method_calls, [( 'UndeleteCluster', (request_pb, timeout_seconds), {}, )]) self.assertEqual(process_operation_called, [response_pb])