Skip to content

Commit d8a7094

Browse files
authored
✨Comp-backend override resources with selected hardware (#4954)
1 parent 04928bd commit d8a7094

File tree

35 files changed

+1017
-735
lines changed

35 files changed

+1017
-735
lines changed

packages/models-library/src/models_library/rabbitmq_basic_types.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,9 @@ def from_entries(cls, entries: dict[str, str]) -> "RPCNamespace":
1919
"""
2020
composed_string = "-".join(f"{k}_{v}" for k, v in sorted(entries.items()))
2121
return parse_obj_as(cls, composed_string)
22+
23+
24+
class RPCMethodName(ConstrainedStr):
25+
min_length: int = 1
26+
max_length: int = 252
27+
regex: re.Pattern[str] | None = re.compile(REGEX_RABBIT_QUEUE_ALLOWED_SYMBOLS)

packages/models-library/src/models_library/services_resources.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ def ensure_limits_are_equal_or_above_reservations(cls, values):
5656
def set_reservation_same_as_limit(self) -> None:
5757
self.reservation = self.limit
5858

59+
def set_value(self, value: StrictInt | StrictFloat | str) -> None:
60+
self.limit = self.reservation = value
61+
5962
class Config:
6063
validate_assignment = True
6164

packages/service-library/src/servicelib/rabbitmq/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
RPCNotInitializedError,
99
RPCServerError,
1010
)
11-
from ._models import RPCMethodName
1211
from ._rpc_router import RPCRouter
1312
from ._utils import wait_till_rabbitmq_responsive
1413

@@ -17,7 +16,6 @@
1716
"RabbitMQClient",
1817
"RabbitMQRPCClient",
1918
"RemoteMethodNotRegisteredError",
20-
"RPCMethodName",
2119
"RPCNamespace",
2220
"RPCNotInitializedError",
2321
"RPCRouter",

packages/service-library/src/servicelib/rabbitmq/_client_rpc.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
from typing import Any
77

88
import aio_pika
9-
from models_library.rabbitmq_basic_types import RPCNamespace
9+
from models_library.rabbitmq_basic_types import RPCMethodName, RPCNamespace
1010
from pydantic import PositiveInt
1111
from settings_library.rabbit import RabbitSettings
1212

1313
from ..logging_utils import log_context
1414
from ._client_base import RabbitMQClientBase
1515
from ._errors import RemoteMethodNotRegisteredError, RPCNotInitializedError
16-
from ._models import RPCMethodName, RPCNamespacedMethodName
16+
from ._models import RPCNamespacedMethodName
1717
from ._rpc_router import RPCRouter
1818
from ._utils import get_rabbitmq_client_unique_name
1919

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
from typing import Final
22

33
BIND_TO_ALL_TOPICS: Final[str] = "#"
4+
RPC_REMOTE_METHOD_TIMEOUT_S: Final[int] = 30

packages/service-library/src/servicelib/rabbitmq/_models.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
from models_library.rabbitmq_basic_types import (
66
REGEX_RABBIT_QUEUE_ALLOWED_SYMBOLS,
7+
RPCMethodName,
78
RPCNamespace,
89
)
910
from pydantic import ConstrainedStr, parse_obj_as
@@ -19,12 +20,6 @@ def routing_key(self) -> str | None:
1920
...
2021

2122

22-
class RPCMethodName(ConstrainedStr):
23-
min_length: int = 1
24-
max_length: int = 252
25-
regex: re.Pattern[str] | None = re.compile(REGEX_RABBIT_QUEUE_ALLOWED_SYMBOLS)
26-
27-
2823
class RPCNamespacedMethodName(ConstrainedStr):
2924
min_length: int = 1
3025
max_length: int = 255

packages/service-library/src/servicelib/rabbitmq/_rpc_router.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
from dataclasses import dataclass, field
66
from typing import Any, TypeVar
77

8+
from models_library.rabbitmq_basic_types import RPCMethodName
89
from pydantic import SecretStr
910

1011
from ..logging_utils import log_context
1112
from ._errors import RPCServerError
12-
from ._models import RPCMethodName
1313

1414
DecoratedCallable = TypeVar("DecoratedCallable", bound=Callable[..., Any])
1515

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/__init__.py

Whitespace-only changes.

packages/service-library/src/servicelib/rabbitmq/rpc_interfaces/clusters_keeper/__init__.py

Whitespace-only changes.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from models_library.api_schemas_clusters_keeper import CLUSTERS_KEEPER_RPC_NAMESPACE
2+
from models_library.api_schemas_clusters_keeper.clusters import OnDemandCluster
3+
from models_library.rabbitmq_basic_types import RPCMethodName
4+
from models_library.users import UserID
5+
from models_library.wallets import WalletID
6+
7+
from ..._client_rpc import RabbitMQRPCClient
8+
from ..._constants import RPC_REMOTE_METHOD_TIMEOUT_S
9+
10+
11+
async def get_or_create_cluster(
12+
client: RabbitMQRPCClient, *, user_id: UserID, wallet_id: WalletID | None
13+
) -> OnDemandCluster:
14+
"""**Remote method**
15+
16+
Raises:
17+
RPCServerError -- if anything happens remotely
18+
"""
19+
on_demand_cluster: OnDemandCluster = await client.request(
20+
CLUSTERS_KEEPER_RPC_NAMESPACE,
21+
RPCMethodName("get_or_create_cluster"),
22+
timeout_s=RPC_REMOTE_METHOD_TIMEOUT_S,
23+
user_id=user_id,
24+
wallet_id=wallet_id,
25+
)
26+
return on_demand_cluster

0 commit comments

Comments
 (0)