From 35d65f433740427dd206db9e26e8a56bdb182100 Mon Sep 17 00:00:00 2001 From: Waldemar Hummer Date: Sat, 18 Nov 2023 02:24:12 +0100 Subject: [PATCH 1/2] fix imports of bootstrap.auth modules --- .../aws_replicator/client/auth_proxy.py | 12 +++++++----- aws-replicator/aws_replicator/client/cli.py | 18 +++++++++++++++--- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/aws-replicator/aws_replicator/client/auth_proxy.py b/aws-replicator/aws_replicator/client/auth_proxy.py index 4a07313..0038bac 100644 --- a/aws-replicator/aws_replicator/client/auth_proxy.py +++ b/aws-replicator/aws_replicator/client/auth_proxy.py @@ -17,7 +17,7 @@ from localstack.aws.api import HttpRequest from localstack.aws.protocol.parser import create_parser from localstack.aws.spec import load_service -from localstack.config import internal_service_url +from localstack.config import external_service_url from localstack.constants import AWS_REGION_US_EAST_1, DOCKER_IMAGE_NAME_PRO from localstack.http import Request from localstack.utils.aws.aws_responses import requests_response @@ -44,7 +44,9 @@ LOG.setLevel(logging.DEBUG) # TODO make configurable -CLI_PIP_PACKAGE = "git+https://github.com/localstack/localstack-extensions/@main#egg=localstack-extension-aws-replicator&subdirectory=aws-replicator" +CLI_PIP_PACKAGE = "localstack-extension-aws-replicator" +# note: enable the line below temporarily for testing: +# CLI_PIP_PACKAGE = "git+https://github.com/localstack/localstack-extensions/@branch#egg=localstack-extension-aws-replicator&subdirectory=aws-replicator" CONTAINER_NAME_PREFIX = "ls-aws-proxy-" CONTAINER_CONFIG_FILE = "/tmp/ls.aws.proxy.yml" @@ -138,7 +140,7 @@ def register_in_instance(self): port = getattr(self, "port", None) if not port: raise Exception("Proxy currently not running") - url = f"{internal_service_url()}{HANDLER_PATH_PROXIES}" + url = f"{external_service_url()}{HANDLER_PATH_PROXIES}" data = AddProxyRequest(port=port, config=self.config) try: response = requests.post(url, json=data) @@ -334,11 +336,11 @@ def start_aws_auth_proxy_in_container( ] env_vars = env_vars or os.environ env_vars = select_attributes(dict(env_vars), env_var_names) - env_vars["LOCALSTACK_HOSTNAME"] = "host.docker.internal" + env_vars["LOCALSTACK_HOST"] = "host.docker.internal" try: print("Proxy container is ready.") - command = f"{venv_activate}; localstack aws proxy -c {CONTAINER_CONFIG_FILE} -p {port} > {CONTAINER_LOG_FILE} 2>&1" + command = f"{venv_activate}; localstack aws proxy -c {CONTAINER_CONFIG_FILE} -p {port} --host 0.0.0.0 > {CONTAINER_LOG_FILE} 2>&1" if quiet: DOCKER_CLIENT.exec_in_container( container_name, command=["bash", "-c", command], env_vars=env_vars, interactive=True diff --git a/aws-replicator/aws_replicator/client/cli.py b/aws-replicator/aws_replicator/client/cli.py index 3256df4..8c90918 100644 --- a/aws-replicator/aws_replicator/client/cli.py +++ b/aws-replicator/aws_replicator/client/cli.py @@ -6,8 +6,9 @@ from localstack.cli import LocalstackCli, LocalstackCliPlugin, console from localstack.logging.setup import setup_logging from localstack.utils.files import load_file -from localstack_ext.bootstrap.licensing import api_key_configured, is_logged_in +from localstack_ext.bootstrap.auth import get_auth_headers from localstack_ext.cli.aws import aws +from localstack_ext.config import is_api_key_configured from aws_replicator.shared.models import ProxyConfig, ProxyServiceConfig @@ -16,7 +17,7 @@ class AwsReplicatorPlugin(LocalstackCliPlugin): name = "aws-replicator" def should_load(self) -> bool: - return is_logged_in() or api_key_configured() + return _is_logged_in() or is_api_key_configured() def attach(self, cli: LocalstackCli) -> None: group: click.Group = cli.group @@ -26,6 +27,15 @@ def attach(self, cli: LocalstackCli) -> None: aws.add_command(cmd_aws_replicate) +# TODO: remove over time as we're phasing out the `login` command +def _is_logged_in() -> bool: + try: + get_auth_headers() + return True + except Exception: + return False + + @click.command(name="proxy", help="Start up an authentication proxy against real AWS") @click.option( "-s", @@ -62,9 +72,11 @@ def cmd_aws_proxy(services: str, config: str, container: bool, port: int, host: start_aws_auth_proxy_in_container, ) - config_json: ProxyConfig = {"services": {}, "bind_host": host} + config_json: ProxyConfig = {"services": {}} if config: config_json = yaml.load(load_file(config), Loader=yaml.SafeLoader) + if host: + config_json["bind_host"] = host if services: services = _split_string(services) for service in services: From d97a2ad0fe96eac192d8372a9b0a493cd6aacb94 Mon Sep 17 00:00:00 2001 From: Waldemar Hummer Date: Sat, 18 Nov 2023 18:37:40 +0100 Subject: [PATCH 2/2] bump version --- aws-replicator/README.md | 1 + aws-replicator/setup.cfg | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/aws-replicator/README.md b/aws-replicator/README.md index 6699bfd..c8b095f 100644 --- a/aws-replicator/README.md +++ b/aws-replicator/README.md @@ -115,6 +115,7 @@ localstack extensions install "git+https://github.com/localstack/localstack-exte ## Change Log +* `0.1.4`: Fix imports of `bootstrap.auth` modules for v3.0 compatibility * `0.1.3`: Adjust code imports for recent LocalStack v3.0 module changes * `0.1.2`: Remove deprecated ProxyListener for starting local aws-replicator proxy server * `0.1.1`: Add simple configuration Web UI diff --git a/aws-replicator/setup.cfg b/aws-replicator/setup.cfg index 8b953f8..197746b 100644 --- a/aws-replicator/setup.cfg +++ b/aws-replicator/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = localstack-extension-aws-replicator -version = 0.1.3 +version = 0.1.4 summary = LocalStack Extension: AWS replicator description = Replicate AWS resources into your LocalStack instance long_description = file: README.md