Skip to content

Commit 01b665f

Browse files
authored
Merge pull request #675 from FlorentinD/handle-empty-memory-field
Handle empty memory on GET instance details
2 parents 0c5ad6e + 090916e commit 01b665f

File tree

4 files changed

+31
-8
lines changed

4 files changed

+31
-8
lines changed

graphdatascience/session/aura_api_responses.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ def fromJson(cls, json: Dict[str, Any]) -> InstanceSpecificDetails:
8282
cloud_provider=json["cloud_provider"],
8383
status=json["status"],
8484
connection_url=json.get("connection_url", ""),
85-
memory=SessionMemoryValue.fromApiResponse(json.get("memory", "")),
85+
memory=SessionMemoryValue.fromInstanceSize(json.get("memory")),
8686
type=json["type"],
8787
region=json["region"],
8888
)

graphdatascience/session/aurads_sessions.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from __future__ import annotations
22

3+
import logging
34
import warnings
45
from typing import List, Optional
56

@@ -16,7 +17,11 @@
1617
from graphdatascience.session.dbms_connection_info import DbmsConnectionInfo
1718
from graphdatascience.session.region_suggester import closest_match
1819
from graphdatascience.session.session_info import SessionInfo
19-
from graphdatascience.session.session_sizes import SessionMemory, SessionMemoryValue
20+
from graphdatascience.session.session_sizes import (
21+
SESSION_MEMORY_VALUE_UNKNOWN,
22+
SessionMemory,
23+
SessionMemoryValue,
24+
)
2025

2126

2227
class AuraDsSessions:
@@ -25,6 +30,7 @@ class AuraDsSessions:
2530

2631
def __init__(self, aura_api: AuraApi) -> None:
2732
self._aura_api = aura_api
33+
self._logger = logging.getLogger()
2834

2935
def estimate(
3036
self, node_count: int, relationship_count: int, algorithm_categories: Optional[List[AlgorithmCategory]] = None
@@ -53,8 +59,12 @@ def get_or_create(
5359

5460
if existing_session:
5561
session_id = existing_session.id
56-
# 0MB is AuraAPI default value for memory if none can be retrieved
57-
if existing_session.memory.value != "0MB" and existing_session.memory != memory.value:
62+
# AuraAPI default value for memory if none can be retrieved
63+
if existing_session.memory == SESSION_MEMORY_VALUE_UNKNOWN:
64+
self._logger.debug(
65+
f"Reusing existing session with id `{session_id}` as size for session is unknown during creation."
66+
)
67+
elif existing_session.memory != memory.value:
5868
raise ValueError(
5969
f"Session `{session_name}` already exists with memory `{existing_session.memory.value}`. "
6070
f"Requested memory `{memory.value}` does not match."

graphdatascience/session/session_sizes.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
from __future__ import annotations
2+
13
from dataclasses import dataclass
24
from enum import Enum
3-
from typing import List
5+
from typing import List, Optional
46

57

68
@dataclass(frozen=True)
@@ -11,7 +13,7 @@ def __str__(self) -> str:
1113
return self.value
1214

1315
@staticmethod
14-
def fromApiResponse(value: str) -> "SessionMemoryValue":
16+
def fromApiResponse(value: str) -> SessionMemoryValue:
1517
"""
1618
Converts the string value from an API response to a SessionMemory enumeration value.
1719
@@ -27,6 +29,16 @@ def fromApiResponse(value: str) -> "SessionMemoryValue":
2729

2830
return SessionMemoryValue(value.replace("Gi", "GB"))
2931

32+
@staticmethod
33+
def fromInstanceSize(value: Optional[str]) -> SessionMemoryValue:
34+
if not value:
35+
return SESSION_MEMORY_VALUE_UNKNOWN
36+
37+
return SessionMemoryValue(value.replace("Gi", "GB"))
38+
39+
40+
SESSION_MEMORY_VALUE_UNKNOWN = SessionMemoryValue("")
41+
3042

3143
class SessionMemory(Enum):
3244
"""

graphdatascience/tests/unit/test_aura_api.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
TimeParser,
1919
WaitResult,
2020
)
21+
from graphdatascience.session.session_sizes import SESSION_MEMORY_VALUE_UNKNOWN
2122

2223

2324
def test_create_session(requests_mock: Mocker) -> None:
@@ -438,15 +439,15 @@ def test_list_instance_missing_memory_field(requests_mock: Mocker) -> None:
438439
"status": "creating",
439440
"tenant_id": "046046d1-6996-53e4-8880-5b822766e1f9",
440441
"type": "enterprise-ds",
441-
"memory": "16Gi",
442+
"memory": "",
442443
}
443444
},
444445
)
445446

446447
result = api.list_instance("id0")
447448

448449
assert result and result.id == "a10fb995"
449-
assert result.memory == SessionMemory.m_16GB.value
450+
assert result.memory == SESSION_MEMORY_VALUE_UNKNOWN
450451

451452

452453
def test_list_missing_instance(requests_mock: Mocker) -> None:

0 commit comments

Comments
 (0)