Skip to content

Commit 79fd788

Browse files
authored
Implement MonitoredResourceDescriptor methods and tests (#1098)
1 parent 0bcca69 commit 79fd788

File tree

3 files changed

+334
-1
lines changed

3 files changed

+334
-1
lines changed

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

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.google.cloud.logging;
1818

1919
import com.google.cloud.AsyncPage;
20+
import com.google.cloud.MonitoredResourceDescriptor;
2021
import com.google.cloud.Page;
2122
import com.google.cloud.Service;
2223

@@ -136,6 +137,25 @@ public static ListOption pageToken(String pageToken) {
136137
*/
137138
Future<Boolean> deleteSinkAsync(String sink);
138139

140+
/**
141+
* Lists the monitored resource descriptors used by Google Cloud Logging. This method returns a
142+
* {@link Page} object that can be used to consume paginated results. Use {@link ListOption} to
143+
* specify the page size or the page token from which to start listing resource descriptors.
144+
*
145+
* @throws LoggingException upon failure
146+
*/
147+
Page<MonitoredResourceDescriptor> listMonitoredResourceDescriptors(ListOption... options);
148+
149+
/**
150+
* Sends a request for listing monitored resource descriptors used by Google Cloud Logging. This
151+
* method returns a {@code Future} object to consume the result. {@link Future#get()} returns an
152+
* {@link AsyncPage} object that can be used to asynchronously handle paginated results. Use
153+
* {@link ListOption} to specify the page size or the page token from which to start listing
154+
* resource descriptors.
155+
*/
156+
Future<AsyncPage<MonitoredResourceDescriptor>> listMonitoredResourceDescriptorsAsync(
157+
ListOption... options);
158+
139159
/**
140160
* Creates a new metric.
141161
*

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

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,15 @@
1616

1717
package com.google.cloud.logging;
1818

19+
import static com.google.api.client.util.Preconditions.checkArgument;
1920
import static com.google.cloud.logging.Logging.ListOption.OptionType.PAGE_SIZE;
2021
import static com.google.cloud.logging.Logging.ListOption.OptionType.PAGE_TOKEN;
21-
import static com.google.common.base.Preconditions.checkArgument;
2222
import static com.google.common.util.concurrent.Futures.lazyTransform;
2323

2424
import com.google.cloud.AsyncPage;
2525
import com.google.cloud.AsyncPageImpl;
2626
import com.google.cloud.BaseService;
27+
import com.google.cloud.MonitoredResourceDescriptor;
2728
import com.google.cloud.Page;
2829
import com.google.cloud.PageImpl;
2930
import com.google.cloud.logging.spi.LoggingRpc;
@@ -43,6 +44,8 @@
4344
import com.google.logging.v2.GetSinkRequest;
4445
import com.google.logging.v2.ListLogMetricsRequest;
4546
import com.google.logging.v2.ListLogMetricsResponse;
47+
import com.google.logging.v2.ListMonitoredResourceDescriptorsRequest;
48+
import com.google.logging.v2.ListMonitoredResourceDescriptorsResponse;
4649
import com.google.logging.v2.ListSinksRequest;
4750
import com.google.logging.v2.ListSinksResponse;
4851
import com.google.logging.v2.UpdateLogMetricRequest;
@@ -118,6 +121,22 @@ public Future<AsyncPage<Sink>> nextPage() {
118121
}
119122
}
120123

124+
private static class MonitoredResourceDescriptorPageFetcher
125+
extends BasePageFetcher<MonitoredResourceDescriptor> {
126+
127+
private static final long serialVersionUID = -2346495771766629195L;
128+
129+
MonitoredResourceDescriptorPageFetcher(LoggingOptions serviceOptions, String cursor,
130+
Map<Option.OptionType, ?> requestOptions) {
131+
super(serviceOptions, cursor, requestOptions);
132+
}
133+
134+
@Override
135+
public Future<AsyncPage<MonitoredResourceDescriptor>> nextPage() {
136+
return listMonitoredResourceDescriptorsAsync(serviceOptions(), requestOptions());
137+
}
138+
}
139+
121140
private static class MetricPageFetcher extends BasePageFetcher<Metric> {
122141

123142
private static final long serialVersionUID = -316783549651771553L;
@@ -230,6 +249,55 @@ public Future<Boolean> deleteSinkAsync(String sink) {
230249
return lazyTransform(rpc.delete(request), EMPTY_TO_BOOLEAN_FUNCTION);
231250
}
232251

252+
private static ListMonitoredResourceDescriptorsRequest listMonitoredResourceDescriptorsRequest(
253+
Map<Option.OptionType, ?> options) {
254+
ListMonitoredResourceDescriptorsRequest.Builder builder =
255+
ListMonitoredResourceDescriptorsRequest.newBuilder();
256+
Integer pageSize = PAGE_SIZE.get(options);
257+
String pageToken = PAGE_TOKEN.get(options);
258+
if (pageSize != null) {
259+
builder.setPageSize(pageSize);
260+
}
261+
if (pageToken != null) {
262+
builder.setPageToken(pageToken);
263+
}
264+
return builder.build();
265+
}
266+
267+
private static Future<AsyncPage<MonitoredResourceDescriptor>>
268+
listMonitoredResourceDescriptorsAsync(final LoggingOptions serviceOptions,
269+
final Map<Option.OptionType, ?> options) {
270+
final ListMonitoredResourceDescriptorsRequest request =
271+
listMonitoredResourceDescriptorsRequest(options);
272+
Future<ListMonitoredResourceDescriptorsResponse> list = serviceOptions.rpc().list(request);
273+
return lazyTransform(list, new Function<ListMonitoredResourceDescriptorsResponse,
274+
AsyncPage<MonitoredResourceDescriptor>>() {
275+
@Override
276+
public AsyncPage<MonitoredResourceDescriptor> apply(
277+
ListMonitoredResourceDescriptorsResponse listDescriptorsResponse) {
278+
List<MonitoredResourceDescriptor> descriptors =
279+
listDescriptorsResponse.getResourceDescriptorsList() == null
280+
? ImmutableList.<MonitoredResourceDescriptor>of()
281+
: Lists.transform(listDescriptorsResponse.getResourceDescriptorsList(),
282+
MonitoredResourceDescriptor.FROM_PB_FUNCTION);
283+
String cursor = listDescriptorsResponse.getNextPageToken().equals("") ? null
284+
: listDescriptorsResponse.getNextPageToken();
285+
return new AsyncPageImpl<>(
286+
new MonitoredResourceDescriptorPageFetcher(serviceOptions, cursor, options), cursor,
287+
descriptors);
288+
}
289+
});
290+
}
291+
292+
public Page<MonitoredResourceDescriptor> listMonitoredResourceDescriptors(ListOption... options) {
293+
return get(listMonitoredResourceDescriptorsAsync(options));
294+
}
295+
296+
public Future<AsyncPage<MonitoredResourceDescriptor>> listMonitoredResourceDescriptorsAsync(
297+
ListOption... options) {
298+
return listMonitoredResourceDescriptorsAsync(options(), optionMap(options));
299+
}
300+
233301
@Override
234302
public Metric create(MetricInfo metric) {
235303
return get(createAsync(metric));

0 commit comments

Comments
 (0)