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)
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, ))
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)
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, ))
def _check(localstack_session): url = localstack_session.endpoint_url(service_name) if not is_port_open(url): raise exceptions.ServiceError(service_name=service_name)