Skip to content

Commit 351c919

Browse files
committed
---
yaml --- r: 4983 b: refs/heads/master c: 08080f0 h: refs/heads/master i: 4981: a599bb0 4979: 3898a13 4975: 251c667
1 parent 3c68836 commit 351c919

4 files changed

Lines changed: 69 additions & 1 deletion

File tree

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 6aa779ce7a22a7944859f9f526a953fae258f384
2+
refs/heads/master: 08080f0d609ebee134b85573765c853cdd450cd7
33
refs/heads/travis: e21ee7b88a5edc3f3d8c71f90c3fc32abf7e8dd6
44
refs/heads/gh-pages: 7406918e071dd2c5677a638ae2a06e7592b6542c
55
refs/heads/pubsub-alpha: d6bbd32eed6cb48cda8d6798ee70ddd6bfc1f07d

trunk/gcloud-java-logging/src/main/java/com/google/cloud/logging/Logging.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,20 @@ public static ListOption pageToken(String pageToken) {
137137
*/
138138
Future<Boolean> deleteSinkAsync(String sink);
139139

140+
/**
141+
* Deletes a log and all its log entries. The log will reappear if new entries are written to it.
142+
*
143+
* @return {@code true} if the log was deleted, {@code false} if it was not found
144+
*/
145+
boolean deleteLog(String log);
146+
147+
/**
148+
* Sends a request for deleting a log and all its log entries. This method returns a
149+
* {@code Future} object to consume the result. {@link Future#get()} returns {@code true} if the
150+
* log was deleted, {@code false} if it was not found.
151+
*/
152+
Future<Boolean> deleteLogAsync(String log);
153+
140154
/**
141155
* Lists the monitored resource descriptors used by Google Cloud Logging. This method returns a
142156
* {@link Page} object that can be used to consume paginated results. Use {@link ListOption} to

trunk/gcloud-java-logging/src/main/java/com/google/cloud/logging/LoggingImpl.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import com.google.cloud.PageImpl;
3030
import com.google.cloud.logging.spi.LoggingRpc;
3131
import com.google.cloud.logging.spi.v2.ConfigServiceV2Api;
32+
import com.google.cloud.logging.spi.v2.LoggingServiceV2Api;
3233
import com.google.cloud.logging.spi.v2.MetricsServiceV2Api;
3334
import com.google.common.base.Function;
3435
import com.google.common.base.Throwables;
@@ -39,6 +40,7 @@
3940
import com.google.logging.v2.CreateLogMetricRequest;
4041
import com.google.logging.v2.CreateSinkRequest;
4142
import com.google.logging.v2.DeleteLogMetricRequest;
43+
import com.google.logging.v2.DeleteLogRequest;
4244
import com.google.logging.v2.DeleteSinkRequest;
4345
import com.google.logging.v2.GetLogMetricRequest;
4446
import com.google.logging.v2.GetSinkRequest;
@@ -249,6 +251,17 @@ public Future<Boolean> deleteSinkAsync(String sink) {
249251
return lazyTransform(rpc.delete(request), EMPTY_TO_BOOLEAN_FUNCTION);
250252
}
251253

254+
public boolean deleteLog(String log) {
255+
return get(deleteLogAsync(log));
256+
}
257+
258+
public Future<Boolean> deleteLogAsync(String log) {
259+
DeleteLogRequest request = DeleteLogRequest.newBuilder()
260+
.setLogName(LoggingServiceV2Api.formatLogName(options().projectId(), log))
261+
.build();
262+
return lazyTransform(rpc.delete(request), EMPTY_TO_BOOLEAN_FUNCTION);
263+
}
264+
252265
private static ListMonitoredResourceDescriptorsRequest listMonitoredResourceDescriptorsRequest(
253266
Map<Option.OptionType, ?> options) {
254267
ListMonitoredResourceDescriptorsRequest.Builder builder =

trunk/gcloud-java-logging/src/test/java/com/google/cloud/logging/LoggingImplTest.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.google.logging.v2.CreateLogMetricRequest;
4040
import com.google.logging.v2.CreateSinkRequest;
4141
import com.google.logging.v2.DeleteLogMetricRequest;
42+
import com.google.logging.v2.DeleteLogRequest;
4243
import com.google.logging.v2.DeleteSinkRequest;
4344
import com.google.logging.v2.GetLogMetricRequest;
4445
import com.google.logging.v2.GetSinkRequest;
@@ -84,6 +85,8 @@ public class LoggingImplTest {
8485
com.google.api.MonitoredResourceDescriptor.getDefaultInstance();
8586
private static final MonitoredResourceDescriptor DESCRIPTOR =
8687
MonitoredResourceDescriptor.fromPb(DESCRIPTOR_PB);
88+
private static final String LOG_NAME = "log";
89+
private static final String LOG_NAME_PB = "projects/" + PROJECT + "/logs/" + LOG_NAME;
8790
private static final Function<SinkInfo, LogSink> SINK_TO_PB_FUNCTION =
8891
new Function<SinkInfo, LogSink>() {
8992
@Override
@@ -1080,4 +1083,42 @@ public void testListResourceDescriptorAsyncWithOptions()
10801083
assertArrayEquals(descriptorList.toArray(),
10811084
Iterables.toArray(page.values(), MonitoredResourceDescriptor.class));
10821085
}
1086+
1087+
@Test
1088+
public void testDeleteLog() {
1089+
DeleteLogRequest request = DeleteLogRequest.newBuilder().setLogName(LOG_NAME_PB).build();
1090+
Future<Empty> response = Futures.immediateFuture(Empty.getDefaultInstance());
1091+
EasyMock.expect(loggingRpcMock.delete(request)).andReturn(response);
1092+
EasyMock.replay(rpcFactoryMock, loggingRpcMock);
1093+
logging = options.service();
1094+
assertTrue(logging.deleteLog(LOG_NAME));
1095+
}
1096+
1097+
@Test
1098+
public void testDeleteLog_Null() {
1099+
DeleteLogRequest request = DeleteLogRequest.newBuilder().setLogName(LOG_NAME_PB).build();
1100+
EasyMock.expect(loggingRpcMock.delete(request)).andReturn(Futures.<Empty>immediateFuture(null));
1101+
EasyMock.replay(rpcFactoryMock, loggingRpcMock);
1102+
logging = options.service();
1103+
assertFalse(logging.deleteLog(LOG_NAME));
1104+
}
1105+
1106+
@Test
1107+
public void testDeleteLogAync() throws ExecutionException, InterruptedException {
1108+
DeleteLogRequest request = DeleteLogRequest.newBuilder().setLogName(LOG_NAME_PB).build();
1109+
Future<Empty> response = Futures.immediateFuture(Empty.getDefaultInstance());
1110+
EasyMock.expect(loggingRpcMock.delete(request)).andReturn(response);
1111+
EasyMock.replay(rpcFactoryMock, loggingRpcMock);
1112+
logging = options.service();
1113+
assertTrue(logging.deleteLogAsync(LOG_NAME).get());
1114+
}
1115+
1116+
@Test
1117+
public void testDeleteLogAsync_Null() throws ExecutionException, InterruptedException {
1118+
DeleteLogRequest request = DeleteLogRequest.newBuilder().setLogName(LOG_NAME_PB).build();
1119+
EasyMock.expect(loggingRpcMock.delete(request)).andReturn(Futures.<Empty>immediateFuture(null));
1120+
EasyMock.replay(rpcFactoryMock, loggingRpcMock);
1121+
logging = options.service();
1122+
assertFalse(logging.deleteLogAsync(LOG_NAME).get());
1123+
}
10831124
}

0 commit comments

Comments
 (0)