diff --git a/gcloud/logging/logger.py b/gcloud/logging/logger.py index 8f280f550b26..ceeb356ede73 100644 --- a/gcloud/logging/logger.py +++ b/gcloud/logging/logger.py @@ -114,3 +114,17 @@ def log_struct(self, info, client=None): } client.connection.api_request( method='POST', path='/entries:write', data=data) + + def delete(self, client=None): + """API call: delete all entries in a logger via a DELETE request + + See: + https://cloud.google.com/pubsub/reference/rest/v1/projects.topics/delete + + :type client: :class:`gcloud.pubsub.client.Client` or ``NoneType`` + :param client: the client to use. If not passed, falls back to the + ``client`` stored on the current logger. + """ + client = self._require_client(client) + client.connection.api_request( + method='DELETE', path='/%s' % self.full_name) diff --git a/gcloud/logging/test_logger.py b/gcloud/logging/test_logger.py index 317e48a8e70c..d5f1c9a56b9a 100644 --- a/gcloud/logging/test_logger.py +++ b/gcloud/logging/test_logger.py @@ -127,6 +127,31 @@ def test_log_struct_w_explicit_client(self): self.assertEqual(req['path'], '/entries:write') self.assertEqual(req['data'], SENT) + def test_delete_w_bound_client(self): + PATH = 'projects/%s/logs/%s' % (self.PROJECT, self.LOGGER_NAME) + conn = _Connection({}) + CLIENT = _Client(project=self.PROJECT, connection=conn) + logger = self._makeOne(self.LOGGER_NAME, client=CLIENT) + logger.delete() + self.assertEqual(len(conn._requested), 1) + req = conn._requested[0] + self.assertEqual(req['method'], 'DELETE') + self.assertEqual(req['path'], '/%s' % PATH) + + def test_delete_w_alternate_client(self): + PATH = 'projects/%s/logs/%s' % (self.PROJECT, self.LOGGER_NAME) + conn1 = _Connection({}) + CLIENT1 = _Client(project=self.PROJECT, connection=conn1) + conn2 = _Connection({}) + CLIENT2 = _Client(project=self.PROJECT, connection=conn2) + logger = self._makeOne(self.LOGGER_NAME, client=CLIENT1) + logger.delete(client=CLIENT2) + self.assertEqual(len(conn1._requested), 0) + self.assertEqual(len(conn2._requested), 1) + req = conn2._requested[0] + self.assertEqual(req['method'], 'DELETE') + self.assertEqual(req['path'], '/%s' % PATH) + class _Connection(object):