Skip to content

Commit

Permalink
Reduce permissions for pubsub validation (#273)
Browse files Browse the repository at this point in the history
remove need for project.subscription.list
  • Loading branch information
noursaidi authored Mar 30, 2022
1 parent b68a581 commit 29530a7
Showing 1 changed file with 6 additions and 19 deletions.
25 changes: 6 additions & 19 deletions validator/src/main/java/com/google/daq/mqtt/util/PubSubClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.fasterxml.jackson.databind.SerializationFeature;
import com.google.api.client.util.Base64;
import com.google.api.core.ApiFuture;
import com.google.api.gax.rpc.NotFoundException;
import com.google.bos.iot.core.proxy.MessagePublisher;
import com.google.cloud.pubsub.v1.AckReplyConsumer;
import com.google.cloud.pubsub.v1.MessageReceiver;
Expand Down Expand Up @@ -154,31 +155,17 @@ public String getSubscriptionId() {

private void resetSubscription(ProjectSubscriptionName subscriptionName) {
try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {
if (subscriptionExists(subscriptionAdminClient, subscriptionName)) {
System.err.println("Resetting existing subscription " + subscriptionName);
subscriptionAdminClient.seek(getCurrentTimeSeekRequest(subscriptionName.toString()));
Thread.sleep(SUBSCRIPTION_RACE_DELAY_MS);
} else {
throw new RuntimeException("Missing subscription for " + subscriptionName);
}
System.err.println("Resetting existing subscription " + subscriptionName);
subscriptionAdminClient.seek(getCurrentTimeSeekRequest(subscriptionName.toString()));
Thread.sleep(SUBSCRIPTION_RACE_DELAY_MS);
} catch (NotFoundException e) {
throw new RuntimeException("Missing subscription for " + subscriptionName);
} catch (Exception e) {
throw new RuntimeException(
String.format(SUBSCRIPTION_ERROR_FORMAT, subscriptionName), e);
}
}

private boolean subscriptionExists(SubscriptionAdminClient subscriptionAdminClient,
ProjectSubscriptionName subscriptionName) {
ListSubscriptionsPagedResponse listSubscriptionsPagedResponse = subscriptionAdminClient
.listSubscriptions(ProjectName.of(projectId));
for (Subscription subscription : listSubscriptionsPagedResponse.iterateAll()) {
if (subscription.getName().equals(subscriptionName.toString())) {
return true;
}
}
return false;
}

static class ErrorContainer extends TreeMap<String, Object> {

ErrorContainer(Exception e, String message) {
Expand Down

0 comments on commit 29530a7

Please sign in to comment.