use of com.amazonaws.services.s3.model.Filter in project druid by apache.
the class EC2AutoScaler method terminate.
@Override
public AutoScalingData terminate(List<String> ips) {
if (ips.isEmpty()) {
return new AutoScalingData(new ArrayList<>());
}
DescribeInstancesResult result = amazonEC2Client.describeInstances(new DescribeInstancesRequest().withFilters(new Filter("private-ip-address", ips)));
List<Instance> instances = new ArrayList<>();
for (Reservation reservation : result.getReservations()) {
instances.addAll(reservation.getInstances());
}
try {
return terminateWithIds(Lists.transform(instances, new Function<Instance, String>() {
@Override
public String apply(Instance input) {
return input.getInstanceId();
}
}));
} catch (Exception e) {
log.error(e, "Unable to terminate any instances.");
}
return null;
}
use of com.amazonaws.services.s3.model.Filter in project urban-eureka by errir503.
the class PrestoS3FileSystem method listPrefix.
private Iterator<LocatedFileStatus> listPrefix(Path path, OptionalInt initialMaxKeys, ListingMode mode) {
String key = keyFromPath(path);
if (!key.isEmpty()) {
key += PATH_SEPARATOR;
}
ListObjectsRequest request = new ListObjectsRequest().withBucketName(getBucketName(uri)).withPrefix(key).withDelimiter(mode == ListingMode.RECURSIVE_FILES_ONLY ? null : PATH_SEPARATOR).withMaxKeys(initialMaxKeys.isPresent() ? initialMaxKeys.getAsInt() : null);
STATS.newListObjectsCall();
Iterator<ObjectListing> listings = new AbstractSequentialIterator<ObjectListing>(s3.listObjects(request)) {
@Override
protected ObjectListing computeNext(ObjectListing previous) {
if (!previous.isTruncated()) {
return null;
}
// Clear any max keys set for the initial request before submitting subsequent requests. Values < 0
// are not sent in the request and the default limit is used
previous.setMaxKeys(-1);
return s3.listNextBatchOfObjects(previous);
}
};
Iterator<LocatedFileStatus> result = Iterators.concat(Iterators.transform(listings, this::statusFromListing));
if (mode.isFilesOnly()) {
// Even recursive listing can still contain empty "directory" objects, must filter them out
result = Iterators.filter(result, LocatedFileStatus::isFile);
}
return result;
}
use of com.amazonaws.services.s3.model.Filter in project workflow-service by UKHomeOffice.
the class PdfService method sendPDFs.
public void sendPDFs(String senderAddress, List<String> recipients, String body, String subject, List<String> attachmentIds) {
if (recipients.isEmpty()) {
log.warn("No recipients defined so not sending email");
return;
}
List<String> filteredRecipients = recipients.stream().filter(StringUtils::isNotBlank).collect(Collectors.toList());
try {
Session session = Session.getDefaultInstance(new Properties());
MimeMessage mimeMessage = new MimeMessage(session);
mimeMessage.setSubject(subject, "UTF-8");
mimeMessage.setFrom(senderAddress);
mimeMessage.setRecipients(Message.RecipientType.TO, filteredRecipients.stream().map(recipient -> {
Address address = null;
try {
address = new InternetAddress(recipient);
} catch (AddressException e) {
log.error("Failed to resolve to address {} {}", recipient, e.getMessage());
}
return address;
}).toArray(Address[]::new));
MimeMultipart mp = new MimeMultipart();
BodyPart part = new MimeBodyPart();
part.setContent(body, "text/html");
mp.addBodyPart(part);
attachmentIds.forEach(id -> {
try {
MimeBodyPart attachment = new MimeBodyPart();
DataSource dataSource;
if (!new URI(id).isAbsolute()) {
S3Object object = amazonS3.getObject(environment.getProperty("aws.s3.pdfs"), id);
dataSource = new ByteArrayDataSource(object.getObjectContent(), "application/pdf");
attachment.setFileName(id);
attachment.setContent("Content-Type", "application/pdf");
} else {
dataSource = restTemplate.execute(id, HttpMethod.GET, null, (ResponseExtractor<DataSource>) response -> {
String type = Objects.requireNonNull(response.getHeaders().getContentType()).toString();
try {
attachment.setFileName(response.getHeaders().getContentDisposition().getFilename());
attachment.setContent("Content-Type", type);
} catch (MessagingException e) {
log.error("Unable to set file name {}", e.getMessage());
}
return new ByteArrayDataSource(response.getBody(), type);
});
}
attachment.setDataHandler(new DataHandler(dataSource));
attachment.setHeader("Content-ID", "<" + UUID.randomUUID().toString() + ">");
mp.addBodyPart(attachment);
} catch (IOException | MessagingException | URISyntaxException e) {
log.error("Failed to get data from S3 {}", e.getMessage());
}
});
mimeMessage.setContent(mp);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
mimeMessage.writeTo(outputStream);
RawMessage rawMessage = new RawMessage(ByteBuffer.wrap(outputStream.toByteArray()));
SendRawEmailRequest sendEmailRequest = new SendRawEmailRequest(rawMessage);
SendRawEmailResult result = amazonSimpleEmailService.sendRawEmail(sendEmailRequest);
log.info("SES send result {}", result.getMessageId());
} catch (Exception e) {
log.error("Failed to send SES", e);
throw new BpmnError("FAILED_TO_SEND_SES", e.getMessage(), e);
}
}
use of com.amazonaws.services.s3.model.Filter in project workflow-service by UKHomeOffice.
the class CasesApplicationService method query.
/**
* Query for cases that match a key. Each case is a collection of process instance pointers. No internal data
* is returned.
*
* @param query
* @param pageable
* @param platformUser
* @return a list of cases.
*/
@AuditableCaseEvent
public Page<Case> query(String query, Pageable pageable, PlatformUser platformUser) {
log.info("Performing search by {}", platformUser.getEmail());
final SearchRequest searchRequest = new SearchRequest();
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.queryStringQuery(query));
sourceBuilder.from(Math.toIntExact(pageable.getOffset()));
sourceBuilder.size(pageable.getPageSize());
sourceBuilder.fetchSource(new String[] { "businessKey" }, null);
searchRequest.source(sourceBuilder);
try {
RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
builder.addHeader("Content-Type", "application/json");
final SearchResponse results = elasticsearchClient.search(searchRequest, builder.build());
final Set<String> keys = StreamSupport.stream(results.getHits().spliterator(), false).filter(s -> s.getSourceAsMap().containsKey("businessKey")).map(s -> s.getSourceAsMap().get("businessKey").toString()).collect(toSet());
List<HistoricProcessInstance> historicProcessInstances = new ArrayList<>();
if (!keys.isEmpty()) {
final List<HistoricProcessInstance> instances = keys.stream().map(key -> historyService.createHistoricProcessInstanceQuery().processInstanceBusinessKey(key).list()).flatMap(List::stream).collect(toList());
historicProcessInstances.addAll(instances);
}
Map<String, List<HistoricProcessInstance>> groupedByBusinessKey = historicProcessInstances.stream().filter(instance -> this.candidateGroupFilter(instance, platformUser)).collect(Collectors.groupingBy(HistoricProcessInstance::getBusinessKey));
List<Case> cases = groupedByBusinessKey.keySet().stream().map(key -> {
Case caseDto = new Case();
caseDto.setBusinessKey(key);
List<HistoricProcessInstance> instances = groupedByBusinessKey.get(key);
caseDto.setProcessInstances(instances.stream().map(HistoricProcessInstanceDto::fromHistoricProcessInstance).collect(toList()));
return caseDto;
}).collect(toList());
final long totalHits = cases.size() == 0 ? 0 : results.getHits().getTotalHits().value;
log.info("Number of cases returned for '{}' is '{}'", query, totalHits);
return new PageImpl<>(cases, PageRequest.of(pageable.getPageNumber(), pageable.getPageSize()), totalHits);
} catch (Exception e) {
log.error("Failed to perform search", e);
throw new RuntimeException(e);
}
}
use of com.amazonaws.services.s3.model.Filter in project cloudbreak by hortonworks.
the class SecurityGroupBuilderUtil method describeSecurityGroup.
private Optional<SecurityGroup> describeSecurityGroup(AmazonEc2Client amazonEc2Client, String vpcId, String groupName) {
DescribeSecurityGroupsRequest describeSecurityGroupsRequest = new DescribeSecurityGroupsRequest().withFilters(new Filter().withName("vpc-id").withValues(vpcId));
DescribeSecurityGroupsResult describeSecurityGroupsResult = amazonEc2Client.describeSecurityGroups(describeSecurityGroupsRequest);
return describeSecurityGroupsResult.getSecurityGroups().stream().filter(result -> result.getGroupName().equals(groupName)).findFirst();
}
Aggregations