Skip to content

Commit fd12b93

Browse files
committed
Add description in openstack and delete unused reboot param
1 parent 2ff40eb commit fd12b93

2 files changed

Lines changed: 38 additions & 3 deletions

File tree

libcloud/compute/drivers/openstack.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1106,7 +1106,7 @@ def _to_absolute(el):
11061106

11071107
return {"rate": rate, "absolute": absolute}
11081108

1109-
def create_image(self, node, name, description=None, reboot=True):
1109+
def create_image(self, node, name, description=None):
11101110
"""Create an image for node.
11111111
11121112
@inherits: :class:`NodeDriver.create_image`
@@ -1802,14 +1802,22 @@ def create_image(
18021802
:param name: The name for the new image.
18031803
:type name: ``str``
18041804
1805+
:param description: A description for the new image. Stored in the
1806+
image metadata because the Compute API does not
1807+
provide a dedicated description field.
1808+
:type description: ``str``
1809+
18051810
:param metadata: Key and value pairs for metadata.
18061811
:type metadata: ``dict``
18071812
18081813
:rtype: :class:`NodeImage`
18091814
"""
18101815
optional_params = {}
1811-
if metadata:
1812-
optional_params["metadata"] = metadata
1816+
image_metadata = dict(metadata) if metadata else {}
1817+
if description is not None:
1818+
image_metadata["description"] = description
1819+
if image_metadata:
1820+
optional_params["metadata"] = image_metadata
18131821
resp = self._node_action(node, "createImage", name=name, **optional_params)
18141822
image_id = self._extract_image_id_from_url(resp.headers["location"])
18151823
return self.get_image(image_id=image_id)

libcloud/test/compute/test_openstack.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1376,6 +1376,33 @@ def test_create_image(self):
13761376
self.assertEqual(image.name, "new_image")
13771377
self.assertEqual(image.id, "4949f9ee-2421-4c81-8b49-13119446008b")
13781378

1379+
def test_create_image_with_description_and_metadata(self):
1380+
metadata = {"version": "1.0"}
1381+
response = Mock(
1382+
headers={
1383+
"location": (
1384+
"http://127.0.0.1/v1.1/68/images/"
1385+
"4949f9ee-2421-4c81-8b49-13119446008b"
1386+
)
1387+
}
1388+
)
1389+
1390+
with mock.patch.object(self.driver, "_node_action", return_value=response) as action:
1391+
self.driver.create_image(
1392+
self.node,
1393+
"new_image",
1394+
description="Image description",
1395+
metadata=metadata,
1396+
)
1397+
1398+
action.assert_called_once_with(
1399+
self.node,
1400+
"createImage",
1401+
name="new_image",
1402+
metadata={"version": "1.0", "description": "Image description"},
1403+
)
1404+
self.assertEqual(metadata, {"version": "1.0"})
1405+
13791406
def test_ex_set_server_name(self):
13801407
old_node = Node(
13811408
id="12064",

0 commit comments

Comments
 (0)