Exemple #1
0
 def _wrapped(localstack_session):
     url = localstack_session.endpoint_url(service_name)
     if not is_port_open(url):
         raise exceptions.ServiceError(service_name=service_name)
     config_kwargs = {
         "connect_timeout": 1,
         "read_timeout": 1,
         "s3": {
             "addressing_style": "path"
         },
     }
     if constants.BOTOCORE_VERSION >= (1, 6, 0):
         config_kwargs["retries"] = {"max_attempts": 1}
     client = localstack_session.botocore.client(
         service_name,
         # Handle retries at a higher level
         config=botocore.config.Config(**config_kwargs),
     )
     client_func = getattr(client, client_func_name)
     try:
         response = client_func()
         check_results_func(response)
     except Exception as e:
         six.raise_from(
             exceptions.ServiceError(service_name=service_name), e)
Exemple #2
0
    def __init__(
        self,
        hostname,
        services=None,
        region_name=None,
        use_ssl=False,
        localstack_version="latest",
        **kwargs,
    ):

        self.kwargs = kwargs
        self.use_ssl = use_ssl
        self.region_name = region_name
        self._hostname = hostname
        self.localstack_version = localstack_version

        if self.localstack_version != "latest" and utils.get_version_tuple(
                localstack_version) < utils.get_version_tuple("0.11"):
            self.service_ports = constants.LEGACY_SERVICE_PORTS
        else:
            self.service_ports = constants.SERVICE_PORTS

        plugin.manager.hook.contribute_to_session(session=self)
        # If no region was provided, use what botocore defaulted to.
        if not region_name:
            self.region_name = (
                self.botocore.session().get_config_variable("region")
                or constants.DEFAULT_AWS_REGION)

        if services is None:
            self.services = copy(self.service_ports)
        elif isinstance(services, (list, tuple, set)):
            self.services = {}
            for service_name in services:
                try:
                    port = self.service_ports[service_name]
                except KeyError:
                    raise exceptions.ServiceError("unknown service " +
                                                  service_name)
                self.services[service_name] = port
        elif isinstance(services, dict):
            self.services = {}
            for service_name, port in services.items():
                if service_name not in self.service_ports:
                    raise exceptions.ServiceError("unknown service " +
                                                  service_name)
                if port is None:
                    port = self.service_ports[service_name]
                self.services[service_name] = port
        else:
            raise TypeError("unsupported services type: %r" % (services, ))
Exemple #3
0
 def service_hostname(self, service_name):
     """Get hostname and port for an AWS service."""
     service_name = constants.SERVICE_ALIASES.get(service_name,
                                                  service_name)
     if service_name not in self.services:
         raise exceptions.ServiceError(
             f"{self!r} does not have {service_name} enabled")
     port = self.map_port(self.services[service_name])
     return "%s:%i" % (self.hostname, port)
Exemple #4
0
    def __init__(self,
                 hostname,
                 services=None,
                 region_name=constants.DEFAULT_AWS_REGION,
                 use_ssl=False,
                 **kwargs):

        self.kwargs = kwargs
        self.use_ssl = use_ssl
        self.region_name = region_name
        self._hostname = hostname

        plugin.manager.hook.contribute_to_session(session=self)

        if services is None:
            self.services = dict(constants.SERVICE_PORTS)
        elif isinstance(services, (list, tuple, set)):
            self.services = {}
            for service_name in services:
                try:
                    port = constants.SERVICE_PORTS[service_name]
                except KeyError:
                    raise exceptions.ServiceError("unknown service " +
                                                  service_name)
                self.services[service_name] = port
        elif isinstance(services, dict):
            self.services = {}
            for service_name, port in services.items():
                if service_name not in constants.SERVICE_PORTS:
                    raise exceptions.ServiceError("unknown service " +
                                                  service_name)
                if port is None:
                    port = constants.SERVICE_PORTS[service_name]
                self.services[service_name] = port
        else:
            raise TypeError("unsupported services type: %r" % (services, ))
    def __init__(self,
                 hostname,
                 services=None,
                 region_name=None,
                 use_ssl=False,
                 localstack_version="latest",
                 **kwargs):

        self.kwargs = kwargs
        self.use_ssl = use_ssl
        self.region_name = region_name
        self._hostname = hostname
        self.localstack_version = localstack_version

        if self.localstack_version != "latest" and utils.get_version_tuple(
                localstack_version) < utils.get_version_tuple("0.11"):
            raise UnsupportedLocalstackVersion()

        plugin.manager.hook.contribute_to_session(session=self)
        # If no region was provided, use what botocore defaulted to.
        if not region_name:
            self.region_name = (
                self.botocore.session().get_config_variable("region")
                or constants.DEFAULT_AWS_REGION)

        if services is None:
            self.services = SERVICES.keys()
        elif isinstance(services, (list, tuple, set)):
            for service_name in services:
                if service_name not in SERVICES:
                    raise exceptions.ServiceError("unknown service " +
                                                  service_name)

            self.services = list(services)
        else:
            raise TypeError("unsupported services type: %r" % (services, ))
Exemple #6
0
 def _check(localstack_session):
     url = localstack_session.endpoint_url(service_name)
     if not is_port_open(url):
         raise exceptions.ServiceError(service_name=service_name)