Example #1
0
    def get_distributions(self, options, **kwargs):
        endpoints = []
        account_number = self.get_option("accountNumber", options)
        try:
            iam_cert_dict = iam.get_certificate_id_to_name(
                account_number=account_number)
            distributions = cloudfront.get_all_distributions(
                account_number=account_number)
        except Exception as e:  # noqa
            capture_exception()
            return endpoints

        current_app.logger.info({
            "message": "Describing CloudFront distributions",
            "account_number": account_number,
            "number_of_distributions": len(distributions)
        })

        for d in distributions:
            try:
                endpoint = get_distribution_endpoint(account_number,
                                                     iam_cert_dict, d)
                if endpoint:
                    endpoints.append(endpoint)
            except Exception as e:  # noqa
                capture_exception()
                continue
        return endpoints
Example #2
0
    def get_endpoint_certificate_names(self, endpoint):
        options = endpoint.source.options
        account_number = self.get_option("accountNumber", options)
        region = get_region_from_dns(endpoint.dnsname)
        certificate_names = []

        if endpoint.type == "elb":
            elb_details = elb.get_elbs(
                account_number=account_number,
                region=region,
                LoadBalancerNames=[endpoint.name],
            )

            for lb_description in elb_details["LoadBalancerDescriptions"]:
                for listener_description in lb_description[
                        "ListenerDescriptions"]:
                    listener = listener_description.get("Listener")
                    if not listener.get("SSLCertificateId"):
                        continue

                    certificate_names.append(
                        iam.get_name_from_arn(
                            listener.get("SSLCertificateId")))
        elif endpoint.type == "elbv2":
            listeners = elb.describe_listeners_v2(
                account_number=account_number,
                region=region,
                LoadBalancerArn=elb.get_load_balancer_arn_from_endpoint(
                    endpoint.name,
                    account_number=account_number,
                    region=region),
            )
            for listener in listeners["Listeners"]:
                if not listener.get("Certificates"):
                    continue

                for certificate in listener["Certificates"]:
                    certificate_names.append(
                        iam.get_name_from_arn(certificate["CertificateArn"]))
        elif endpoint.type == "cloudfront":
            cert_id_to_name = iam.get_certificate_id_to_name(
                account_number=account_number)
            dist = cloudfront.get_distribution(account_number=account_number,
                                               distribution_id=endpoint.name)
            loaded = get_distribution_endpoint(account_number, cert_id_to_name,
                                               dist)
            if loaded:
                certificate_names.append(loaded["certificate_name"])
        else:
            raise NotImplementedError()

        return certificate_names