Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 8 additions & 10 deletions tests/test_node_image_definitions.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ def test_upload_def_json_rt(upload_method: str, payload: dict) -> None:
"""
session = MagicMock()
defs = NodeImageDefinitions(session)
session.request.return_value.json.return_value = "Success"
assert getattr(defs, upload_method)(payload) == "Success"
session.request.return_value.json.return_value = {"id": "a"}
assert getattr(defs, upload_method)(payload) == {"id": "a"}


@pytest.mark.parametrize(
Expand All @@ -121,8 +121,8 @@ def test_upload_def_yaml_update_rt(upload_method: str) -> None:
"""
session = MagicMock()
defs = NodeImageDefinitions(session)
session.request.return_value.json.return_value = "Success"
assert getattr(defs, upload_method)("yaml-body", update=True) == "Success"
session.request.return_value.json.return_value = {"id": "a"}
assert getattr(defs, upload_method)("yaml-body", update=True) == {"id": "a"}


@pytest.mark.parametrize(
Expand All @@ -144,14 +144,14 @@ def test_node_image_defs_download(method: str, arg: str) -> None:


def test_remove_dropfolder_image_list() -> None:
"""remove_dropfolder_image deletes and returns result.
"""remove_dropfolder_image deletes the image and returns None.

NOTE: LLM-generated test -- verify for correctness.
"""
session = MagicMock()
defs = NodeImageDefinitions(session)
session.delete.return_value.json.return_value = "Success"
assert defs.remove_dropfolder_image("x.qcow2") == "Success"
assert defs.remove_dropfolder_image("x.qcow2") is None
session.delete.assert_called_once_with("images/manage/x.qcow2")


@pytest.mark.parametrize(
Expand Down Expand Up @@ -286,10 +286,8 @@ def test_remove_dropfolder_image() -> None:
"""
session = MagicMock()
defs = NodeImageDefinitions(session)
session.delete.return_value.json.return_value = {"status": "removed"}

remove_result = defs.remove_dropfolder_image("image.qcow2")
assert remove_result == {"status": "removed"}
assert defs.remove_dropfolder_image("image.qcow2") is None
assert session.delete.mock_calls[0].args[0] == "images/manage/image.qcow2"


Expand Down
17 changes: 10 additions & 7 deletions virl2_client/models/node_image_definition.py
Original file line number Diff line number Diff line change
Expand Up @@ -129,13 +129,15 @@ def set_node_definition_read_only(
url = f"node_definitions/{definition_id}/read_only"
return self._session.put(url, json=read_only).json()

def upload_node_definition(self, body: str | dict, update: bool = False) -> str:
def upload_node_definition(
self, body: str | dict, update: bool = False
) -> dict[str, Any]:
"""
Upload a new node definition.

:param body: The node definition (yaml or json).
:param update: If creating a new node definition or updating an existing one.
:returns: "Success".
:returns: The created (or updated) node definition.
"""
is_json = _is_json_content(body)
url = self._url_for("node_defs")
Expand All @@ -146,13 +148,15 @@ def upload_node_definition(self, body: str | dict, update: bool = False) -> str:
# YAML
return self._session.request(method, url, content=body).json()

def upload_image_definition(self, body: str | dict, update: bool = False) -> str:
def upload_image_definition(
self, body: str | dict, update: bool = False
) -> dict[str, Any]:
"""
Upload a new image definition.

:param body: The image definition (yaml or json).
:param update: If creating a new image definition or updating an existing one.
:returns: "Success".
:returns: The created (or updated) image definition.
"""
is_json = _is_json_content(body)
url = self._url_for("image_defs")
Expand Down Expand Up @@ -277,15 +281,14 @@ def download_image_file_list(self) -> list[str]:
url = self._url_for("image_list")
return self._session.get(url).json()

def remove_dropfolder_image(self, filename: str) -> str:
def remove_dropfolder_image(self, filename: str) -> None:
"""
Remove an image file from the drop folder.

:param filename: The name of the image file to remove.
:returns: "Success".
"""
url = self._url_for("image_manage", filename=filename)
return self._session.delete(url).json()
self._session.delete(url)

def remove_node_definition(self, definition_id: str) -> None:
"""
Expand Down
Loading