Search in sources :

Example 81 with Filter

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;
}
Also used : DescribeInstancesResult(com.amazonaws.services.ec2.model.DescribeInstancesResult) Function(com.google.common.base.Function) Reservation(com.amazonaws.services.ec2.model.Reservation) AutoScalingData(org.apache.druid.indexing.overlord.autoscaling.AutoScalingData) Filter(com.amazonaws.services.ec2.model.Filter) Instance(com.amazonaws.services.ec2.model.Instance) ArrayList(java.util.ArrayList) DescribeInstancesRequest(com.amazonaws.services.ec2.model.DescribeInstancesRequest)

Example 82 with Filter

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;
}
Also used : ListObjectsRequest(com.amazonaws.services.s3.model.ListObjectsRequest) ObjectListing(com.amazonaws.services.s3.model.ObjectListing) LocatedFileStatus(org.apache.hadoop.fs.LocatedFileStatus) AbstractSequentialIterator(com.google.common.collect.AbstractSequentialIterator)

Example 83 with Filter

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);
    }
}
Also used : ResponseExtractor(org.springframework.web.client.ResponseExtractor) DataHandler(javax.activation.DataHandler) URISyntaxException(java.net.URISyntaxException) AwsProperties(uk.gov.homeoffice.cop.workflow.aws.AwsProperties) URI(java.net.URI) S3Object(com.amazonaws.services.s3.model.S3Object) RawMessage(com.amazonaws.services.simpleemail.model.RawMessage) ByteArrayDataSource(javax.mail.util.ByteArrayDataSource) BpmnError(org.camunda.bpm.engine.delegate.BpmnError) SendRawEmailResult(com.amazonaws.services.simpleemail.model.SendRawEmailResult) IOException(java.io.IOException) ByteArrayOutputStream(java.io.ByteArrayOutputStream) URISyntaxException(java.net.URISyntaxException) IOException(java.io.IOException) ByteArrayDataSource(javax.mail.util.ByteArrayDataSource) DataSource(javax.activation.DataSource) SendRawEmailRequest(com.amazonaws.services.simpleemail.model.SendRawEmailRequest)

Example 84 with Filter

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);
    }
}
Also used : HistoricProcessInstanceDto(org.camunda.bpm.engine.rest.dto.history.HistoricProcessInstanceDto) AuthorizationService(org.camunda.bpm.engine.AuthorizationService) URLDecoder(java.net.URLDecoder) RequiredArgsConstructor(lombok.RequiredArgsConstructor) QueryBuilders(org.elasticsearch.index.query.QueryBuilders) ObjectListing(com.amazonaws.services.s3.model.ObjectListing) HistoricProcessInstance(org.camunda.bpm.engine.history.HistoricProcessInstance) HistoricProcessInstanceQuery(org.camunda.bpm.engine.history.HistoricProcessInstanceQuery) JSONObject(org.json.JSONObject) Resources(org.camunda.bpm.engine.authorization.Resources) ObjectMetadata(com.amazonaws.services.s3.model.ObjectMetadata) DataUploadFailedException(uk.gov.homeoffice.cop.workflow.data.DataUploadFailedException) Duration(java.time.Duration) SearchResponse(org.elasticsearch.action.search.SearchResponse) RequestOptions(org.elasticsearch.client.RequestOptions) Pageable(org.springframework.data.domain.Pageable) ParseException(java.text.ParseException) CamundaManager(uk.gov.homeoffice.cop.workflow.data.camunda.CamundaManager) Collectors.toSet(java.util.stream.Collectors.toSet) PageRequest(org.springframework.data.domain.PageRequest) PostAuthorize(org.springframework.security.access.prepost.PostAuthorize) Page(org.springframework.data.domain.Page) Collectors(java.util.stream.Collectors) StandardCharsets(java.nio.charset.StandardCharsets) String.format(java.lang.String.format) IOUtils(org.apache.commons.io.IOUtils) Slf4j(lombok.extern.slf4j.Slf4j) RetryCallback(org.springframework.retry.RetryCallback) SpinJsonNode(org.camunda.spin.json.SpinJsonNode) Authorization(org.camunda.bpm.engine.authorization.Authorization) PageImpl(org.springframework.data.domain.PageImpl) HistoryService(org.camunda.bpm.engine.HistoryService) java.util(java.util) SimpleDateFormat(java.text.SimpleDateFormat) SearchRequest(org.elasticsearch.action.search.SearchRequest) S3Object(com.amazonaws.services.s3.model.S3Object) Service(org.springframework.stereotype.Service) AwsProperties(uk.gov.homeoffice.cop.workflow.aws.AwsProperties) SearchSourceBuilder(org.elasticsearch.search.builder.SearchSourceBuilder) AmazonS3(com.amazonaws.services.s3.AmazonS3) StreamSupport(java.util.stream.StreamSupport) S3Uploader(uk.gov.homeoffice.cop.workflow.data.s3.S3Uploader) Form(uk.gov.homeoffice.cop.workflow.common.Form) JsonConverter(uk.gov.homeoffice.cop.workflow.data.elasticsearch.JsonConverter) ActivityTypes(org.camunda.bpm.engine.ActivityTypes) IOException(java.io.IOException) RestHighLevelClient(org.elasticsearch.client.RestHighLevelClient) Collectors.toList(java.util.stream.Collectors.toList) GetObjectMetadataRequest(com.amazonaws.services.s3.model.GetObjectMetadataRequest) RetryTemplate(org.springframework.retry.support.RetryTemplate) Spin(org.camunda.spin.Spin) JSONArray(org.json.JSONArray) PageImpl(org.springframework.data.domain.PageImpl) SearchRequest(org.elasticsearch.action.search.SearchRequest) RequestOptions(org.elasticsearch.client.RequestOptions) HistoricProcessInstance(org.camunda.bpm.engine.history.HistoricProcessInstance) DataUploadFailedException(uk.gov.homeoffice.cop.workflow.data.DataUploadFailedException) ParseException(java.text.ParseException) IOException(java.io.IOException) SearchSourceBuilder(org.elasticsearch.search.builder.SearchSourceBuilder) SearchResponse(org.elasticsearch.action.search.SearchResponse) Collectors.toList(java.util.stream.Collectors.toList)

Example 85 with Filter

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();
}
Also used : AwsResourceNameService(com.sequenceiq.cloudbreak.cloud.aws.common.service.AwsResourceNameService) CloudContext(com.sequenceiq.cloudbreak.cloud.context.CloudContext) AuthorizeSecurityGroupIngressRequest(com.amazonaws.services.ec2.model.AuthorizeSecurityGroupIngressRequest) ArrayList(java.util.ArrayList) AwsNetworkService(com.sequenceiq.cloudbreak.cloud.aws.common.connector.resource.AwsNetworkService) HashSet(java.util.HashSet) Inject(javax.inject.Inject) AwsNetworkView(com.sequenceiq.cloudbreak.cloud.aws.common.view.AwsNetworkView) AmazonEc2Client(com.sequenceiq.cloudbreak.cloud.aws.common.client.AmazonEc2Client) AuthenticatedContext(com.sequenceiq.cloudbreak.cloud.context.AuthenticatedContext) DescribeSecurityGroupsResult(com.amazonaws.services.ec2.model.DescribeSecurityGroupsResult) DescribeSecurityGroupsRequest(com.amazonaws.services.ec2.model.DescribeSecurityGroupsRequest) Filter(com.amazonaws.services.ec2.model.Filter) PrefixListId(com.amazonaws.services.ec2.model.PrefixListId) PortDefinition(com.sequenceiq.cloudbreak.cloud.model.PortDefinition) Network(com.sequenceiq.cloudbreak.cloud.model.Network) NotFoundException(com.sequenceiq.cloudbreak.common.exception.NotFoundException) ResourceType(com.sequenceiq.common.api.type.ResourceType) Logger(org.slf4j.Logger) IpRange(com.amazonaws.services.ec2.model.IpRange) SecurityRule(com.sequenceiq.cloudbreak.cloud.model.SecurityRule) Set(java.util.Set) SecurityGroup(com.amazonaws.services.ec2.model.SecurityGroup) CreateSecurityGroupResult(com.amazonaws.services.ec2.model.CreateSecurityGroupResult) List(java.util.List) Component(org.springframework.stereotype.Component) Group(com.sequenceiq.cloudbreak.cloud.model.Group) AmazonEC2Exception(com.amazonaws.services.ec2.model.AmazonEC2Exception) CreateSecurityGroupRequest(com.amazonaws.services.ec2.model.CreateSecurityGroupRequest) LoggerFactory.getLogger(org.slf4j.LoggerFactory.getLogger) Optional(java.util.Optional) OutboundInternetTraffic(com.sequenceiq.common.api.type.OutboundInternetTraffic) IpPermission(com.amazonaws.services.ec2.model.IpPermission) Collections(java.util.Collections) AwsTaggingService(com.sequenceiq.cloudbreak.cloud.aws.common.AwsTaggingService) AuthorizeSecurityGroupEgressRequest(com.amazonaws.services.ec2.model.AuthorizeSecurityGroupEgressRequest) DescribeSecurityGroupsRequest(com.amazonaws.services.ec2.model.DescribeSecurityGroupsRequest) Filter(com.amazonaws.services.ec2.model.Filter) DescribeSecurityGroupsResult(com.amazonaws.services.ec2.model.DescribeSecurityGroupsResult)

Aggregations

Filter (com.amazonaws.services.ec2.model.Filter)96 ArrayList (java.util.ArrayList)70 List (java.util.List)52 Collectors (java.util.stream.Collectors)46 IOException (java.io.IOException)41 HashMap (java.util.HashMap)38 Map (java.util.Map)35 AmazonS3 (com.amazonaws.services.s3.AmazonS3)34 Set (java.util.Set)31 DescribeInstancesRequest (com.amazonaws.services.ec2.model.DescribeInstancesRequest)30 S3ObjectSummary (com.amazonaws.services.s3.model.S3ObjectSummary)27 Instance (com.amazonaws.services.ec2.model.Instance)26 HashSet (java.util.HashSet)26 Reservation (com.amazonaws.services.ec2.model.Reservation)24 Collections (java.util.Collections)23 DescribeInstancesResult (com.amazonaws.services.ec2.model.DescribeInstancesResult)21 ObjectListing (com.amazonaws.services.s3.model.ObjectListing)21 DescribeSubnetsRequest (com.amazonaws.services.ec2.model.DescribeSubnetsRequest)20 Entry (java.util.Map.Entry)20 Tag (com.amazonaws.services.ec2.model.Tag)18