public Option describeInstance()

in src/main/java/com/awslabs/ec2/implementations/BasicEc2Helper.java [26:57]


    public Option<Instance> describeInstance() {
        if (!isEc2()) {
            // No instance ID unless we're on EC2
            return Option.none();
        }

        Option<String> instanceIdOption = Option.of(EC2MetadataUtils.getInstanceInfo().getInstanceId());

        if (instanceIdOption.isEmpty()) {
            // Can't get the instance ID
            return Option.none();
        }

        String instanceId = instanceIdOption.get();

        DescribeInstancesRequest describeInstancesRequest = DescribeInstancesRequest.builder()
                .instanceIds(instanceId)
                .build();

        DescribeInstancesResponse describeInstancesResponse = ec2Client.describeInstances(describeInstancesRequest);

        Option<Instance> instanceOption = Option.ofOptional(describeInstancesResponse.reservations().stream()
                .flatMap(reservation -> reservation.instances().stream())
                .filter(instance -> instance.instanceId().equals(instanceId))
                .findFirst());

        if (instanceOption.isEmpty()) {
            throw new UnsupportedOperationException(String.join("", "Instance ID [", instanceId, "] not found"));
        }

        return instanceOption;
    }