Skip to content

Commit bee6d01

Browse files
committed
Wire up message consumer to call the VM Metadata override
Lastly, we wire up the message consumer so that it uses the VM Metadata instead of the image metadata. This is important when a user uses our bespoke website, where they can set these fields
1 parent 85238f4 commit bee6d01

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

OpenStack-Rabbit-Consumer/rabbit_consumer/message_consumer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,9 @@ def get_aq_build_metadata(vm_data: VmData) -> AqMetadata:
4040
"""
4141
image = openstack_api.get_image(vm_data)
4242
image_meta = AqMetadata.from_dict(image.metadata)
43+
44+
vm_metadata = openstack_api.get_server_metadata(vm_data)
45+
image_meta.override_from_vm_meta(vm_metadata)
4346
return image_meta
4447

4548

OpenStack-Rabbit-Consumer/rabbit_consumer/openstack_api.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def get_server_networks(vm_data: VmData) -> List[OpenstackAddress]:
7171
return OpenstackAddress.get_internal_networks(server.addresses)
7272

7373

74-
def get_metadata(vm_data: VmData) -> dict:
74+
def get_server_metadata(vm_data: VmData) -> dict:
7575
"""
7676
Gets the metadata from Openstack for the virtual machine.
7777
"""

OpenStack-Rabbit-Consumer/test/test_message_consumer.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from unittest.mock import Mock, NonCallableMock, patch, call
1+
from unittest.mock import Mock, NonCallableMock, patch, call, MagicMock
22

33
import pytest
44

@@ -344,13 +344,20 @@ def test_is_aq_managed_image_missing_key(openstack_api, vm_data):
344344

345345
@patch("rabbit_consumer.message_consumer.AqMetadata")
346346
@patch("rabbit_consumer.message_consumer.openstack_api")
347-
def test_get_aq_build_metadata(openstack_api, image_metadata, vm_data):
347+
def test_get_aq_build_metadata(openstack_api, aq_metadata_class, vm_data):
348348
"""
349349
Test that the function returns the correct metadata
350350
"""
351-
image_meta = get_aq_build_metadata(vm_data)
351+
aq_metadata_obj: MagicMock = get_aq_build_metadata(vm_data)
352352

353-
assert image_meta == image_metadata.from_dict.return_value
354-
image_metadata.from_dict.assert_called_once_with(
353+
# We should first construct from an image
354+
assert aq_metadata_obj == aq_metadata_class.from_dict.return_value
355+
aq_metadata_class.from_dict.assert_called_once_with(
355356
openstack_api.get_image.return_value.metadata
356357
)
358+
359+
# Then override with an object
360+
openstack_api.get_server_metadata.assert_called_once_with(vm_data)
361+
aq_metadata_obj.override_from_vm_meta.assert_called_once_with(
362+
openstack_api.get_server_metadata.return_value
363+
)

0 commit comments

Comments
 (0)