8000 Unify packages · localstack/localstack@a089a68 · GitHub
[go: up one dir, main page]

Skip to content

Commit a089a68

Browse files
committed
Unify packages
1 parent cc634d2 commit a089a68

File tree

4 files changed

+45
-20
lines changed

4 files changed

+45
-20
lines changed

localstack-core/localstack/services/kinesis/kinesis_mock_server.py

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2,31 +2,22 @@
22
import os
33
import threading
44
from abc import abstractmethod
5-
from enum import StrEnum
65
from pathlib import Path
7-
from typing import Any, Dict, List, Optional, Tuple
6+
from typing import Dict, List, Optional, Tuple
87

98
from localstack import config
10-
from localstack.services.kinesis.packages import kinesismock_node_package, kinesismock_scala_package
9+
from localstack.services.kinesis.packages import (
10+
KinesisMockEngine,
11+
kinesismock_package,
12+
kinesismock_scala_package,
13+
)
1114
from localstack.utils.common import TMP_THREADS, ShellCommandThread, get_free_tcp_port, mkdir
1215
from localstack.utils.run import FuncThread
1316
from localstack.utils.serving import Server
1417

1518
LOG = logging.getLogger(__name__)
1619

1720

18-
class KinesisMockEngine(StrEnum):
19-
NODE = "node"
20-
SCALA = "scala"
21-
22-
@classmethod
23-
def _missing_(cls, value: str | Any) -> str:
24-
# default to 'node' if invalid enum
25-
if not isinstance(value, str):
26-
return cls(cls.NODE)
27-
return cls.__members__.get(value.upper(), cls.NODE)
28-
29-
3021
class KinesisMockServer(Server):
3122
"""
3223
Server abstraction for controlling Kinesis Mock in a separate thread
@@ -229,8 +220,8 @@ def _create_kinesis_mock_server(self, account_id: str) -> KinesisMockServer:
229220
)
230221

231222
# Otherwise, install the NodeJS version (default)
232-
kinesismock_node_package.install()
233-
kinesis_mock_path = Path(kinesismock_node_package.get_installer().get_executable_path())
223+
kinesismock_package.install()
224+
kinesis_mock_path = Path(kinesismock_package.get_installer().get_executable_path())
234225

235226
return KinesisMockNodeServer(
236227
port=port,

localstack-core/localstack/services/kinesis/packages.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import os
2+
from enum import StrEnum
23
from functools import lru_cache
3-
from typing import List
4+
from typing import Any, List
45

56
from localstack.packages import InstallTarget, Package
67
from localstack.packages.core import GitHubReleaseInstaller, NodePackageInstaller
@@ -9,6 +10,18 @@
910
_KINESIS_MOCK_VERSION = os.environ.get("KINESIS_MOCK_VERSION") or "0.4.12"
1011

1112

13+
class KinesisMockEngine(StrEnum):
14+
NODE = "node"
15+
SCALA = "scala"
16+
17+
@classmethod
18+
def _missing_(cls, value: str | Any) -> str:
19+
# default to 'node' if invalid enum
20+
if not isinstance(value, str):
21+
return cls(cls.NODE)
22+
return cls.__members__.get(value.upper(), cls.NODE)
23+
24+
1225
class KinesisMockNodePackageInstaller(NodePackageInstaller):
1326
def __init__(self, version: str):
1427
super().__init__(package_name="kinesis-local", version=version)
@@ -64,5 +77,6 @@ def get_versions(self) -> List[str]:
6477
return [_KINESIS_MOCK_VERSION]
6578

6679

67-
kinesismock_node_package = KinesisMockNodePackage()
80+
# leave as 'kinesismock_package' for backwards compatability
81+
kinesismock_package = KinesisMockNodePackage()
6882
kinesismock_scala_package = KinesisMockScalaPackage()
Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
1+
import localstack.config as config
12
from localstack.packages import Package, package
23

34

45
@package(name="kinesis-mock")
56
def kinesismock_package() -> Package:
6-
from localstack.services.kinesis.packages import kinesismock_package
7+
from localstack.services.kinesis.packages import (
8+
KinesisMockEngine,
9+
kinesismock_package,
10+
kinesismock_scala_package,
11+
)
12+
13+
if KinesisMockEngine(config.KINESIS_MOCK_PROVIDER_ENGINE) == KinesisMockEngine.SCALA:
14+
return kinesismock_scala_package
715

816
return kinesismock_package

tests/unit/cli/test_lpm.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,15 @@ def test_install_with_package(runner):
102102
result = runner.invoke(cli, ["install", "kinesis-mock"])
103103
assert result.exit_code == 0
104104
assert os.path.exists(kinesismock_package.get_installed_dir())
105+
106+
107+
@markers.skip_offline
108+
def test_install_with_package_override(runner, monkeypatch):
109+
from localstack import config
110+
from localstack.services.kinesis.packages import kinesismock_scala_package
111+
112+
monkeypatch.setattr(config, "KINESIS_MOCK_PROVIDER_ENGINE", "scala")
113+
114+
result = runner.invoke(cli, ["install", "kinesis-mock"])
115+
assert result.exit_code == 0
116+
assert os.path.exists(kinesismock_scala_package.get_installed_dir())

0 commit comments

Comments
 (0)
0