Skip to content

Commit 3e4ce8a

Browse files
committed
fix(create-svm): VolumeResult - NetApp returns size as integer
This is not directly related to this feature, but it's needed and I've noticed it's broken due to pydantic being more strict about data returned from the NetApp REST API.
1 parent 545729f commit 3e4ce8a

File tree

5 files changed

+15
-16
lines changed

5 files changed

+15
-16
lines changed

python/understack-workflows/tests/test_netapp_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,7 +215,7 @@ def test_create_volume_success(self, mock_volume_class, netapp_client):
215215
mock_volume_instance = MagicMock()
216216
mock_volume_instance.name = "test-volume"
217217
mock_volume_instance.uuid = "volume-uuid-123"
218-
mock_volume_instance.size = "1TB"
218+
mock_volume_instance.size = 1024
219219
mock_volume_instance.state = "online"
220220
mock_volume_class.return_value = mock_volume_instance
221221

@@ -231,7 +231,7 @@ def test_create_volume_success(self, mock_volume_class, netapp_client):
231231
assert isinstance(result, VolumeResult)
232232
assert result.name == "test-volume"
233233
assert result.uuid == "volume-uuid-123"
234-
assert result.size == "1TB"
234+
assert result.size == 1024
235235
assert result.state == "online"
236236
assert result.svm_name == "test-svm"
237237

python/understack-workflows/tests/test_netapp_value_objects.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -321,21 +321,21 @@ def test_valid_volume_result(self):
321321
result = VolumeResult(
322322
name="test-volume",
323323
uuid="vol-uuid-123",
324-
size="1TB",
324+
size=1024,
325325
state="online",
326326
svm_name="test-svm",
327327
)
328328

329329
assert result.name == "test-volume"
330330
assert result.uuid == "vol-uuid-123"
331-
assert result.size == "1TB"
331+
assert result.size == 1024
332332
assert result.state == "online"
333333
assert result.svm_name == "test-svm"
334334

335335
def test_volume_result_without_svm_name(self):
336336
"""Test volume result without SVM name."""
337337
result = VolumeResult(
338-
name="test-volume", uuid="vol-uuid-123", size="1TB", state="online"
338+
name="test-volume", uuid="vol-uuid-123", size=1024, state="online"
339339
)
340340

341341
assert result.svm_name is None
@@ -346,7 +346,7 @@ def test_volume_result_various_states(self):
346346

347347
for state in states:
348348
result = VolumeResult(
349-
name="test-volume", uuid="vol-uuid-123", size="1TB", state=state
349+
name="test-volume", uuid="vol-uuid-123", size=1024, state=state
350350
)
351351
assert result.state == state
352352

python/understack-workflows/tests/test_netapp_volume_service.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ def test_create_volume_success(
5252
mock_client.create_volume.return_value = VolumeResult(
5353
name=expected_volume_name,
5454
uuid="volume-uuid-123",
55-
size=size,
55+
size=1024,
5656
state="online",
5757
svm_name=expected_svm_name,
5858
)
@@ -253,21 +253,20 @@ def test_volume_spec_creation(
253253
):
254254
"""Test that volume specification is created correctly."""
255255
project_id = "test-project-789"
256-
size = "2TB"
257256
aggregate_name = "test-aggregate"
258257

259258
mock_client.create_volume.return_value = VolumeResult(
260-
name="vol_test-project-789", uuid="uuid-123", size=size, state="online"
259+
name="vol_test-project-789", uuid="uuid-123", size=2048, state="online"
261260
)
262261

263-
volume_service.create_volume(project_id, size, aggregate_name)
262+
volume_service.create_volume(project_id, "2048M", aggregate_name)
264263

265264
# Verify the volume spec is created correctly
266265
call_args = mock_client.create_volume.call_args[0][0]
267266
assert call_args.name == "vol_test-project-789"
268267
assert call_args.svm_name == "os-test-project-789"
269268
assert call_args.aggregate_name == aggregate_name
270-
assert call_args.size == size
269+
assert call_args.size == "2048M"
271270

272271
def test_namespace_spec_creation(
273272
self, volume_service, mock_client, mock_error_handler
@@ -304,7 +303,7 @@ def test_exists_volume_found(self, volume_service, mock_client, mock_error_handl
304303
mock_volume_result = VolumeResult(
305304
name=expected_volume_name,
306305
uuid="volume-uuid-123",
307-
size="1TB",
306+
size=1024,
308307
state="online",
309308
svm_name=expected_svm_name,
310309
)

python/understack-workflows/understack_workflows/netapp/client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,7 +352,7 @@ def create_volume(self, volume_spec: VolumeSpec) -> VolumeResult:
352352
result = VolumeResult(
353353
name=str(volume.name),
354354
uuid=str(volume.uuid),
355-
size=getattr(volume, "size", volume_spec.size),
355+
size=int(getattr(volume, "size", volume_spec.size)),
356356
state=getattr(volume, "state", "unknown"),
357357
svm_name=volume_spec.svm_name,
358358
)
@@ -426,7 +426,7 @@ def find_volume(self, volume_name: str, svm_name: str) -> VolumeResult | None:
426426
return VolumeResult(
427427
name=str(volume.name),
428428
uuid=str(volume.uuid),
429-
size=getattr(volume, "size", "unknown"),
429+
size=int(getattr(volume, "size", "unknown")),
430430
state=getattr(volume, "state", "unknown"),
431431
svm_name=svm_name,
432432
)

python/understack-workflows/understack_workflows/netapp/value_objects.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -749,7 +749,7 @@ class VolumeResult(BaseModel):
749749
>>> result = VolumeResult(
750750
... name="test-vol",
751751
... uuid="12345678-1234-1234-1234-123456789abc",
752-
... size="100GB",
752+
... size=10024,
753753
... state="online",
754754
... svm_name="test-svm"
755755
... )
@@ -759,7 +759,7 @@ class VolumeResult(BaseModel):
759759

760760
name: str
761761
uuid: str
762-
size: str
762+
size: int
763763
state: str
764764
svm_name: str | None = None
765765

0 commit comments

Comments
 (0)