Skip to content

Commit ae5f300

Browse files
Zuulopenstack-gerrit
authored andcommitted
Merge "volume: Add 'volume message *' commands"
2 parents 673fec4 + 0eddab3 commit ae5f300

8 files changed

Lines changed: 579 additions & 3 deletions

File tree

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
==============
2+
volume message
3+
==============
4+
5+
Block Storage v3
6+
7+
.. autoprogram-cliff:: openstack.volume.v3
8+
:command: volume message *

doc/source/cli/commands.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ referring to both Compute and Volume quotas.
160160
* ``volume backup record``: (**Volume**) volume record that can be imported or exported
161161
* ``volume backend``: (**Volume**) volume backend storage
162162
* ``volume host``: (**Volume**) the physical computer for volumes
163+
* ``volume message``: (**Volume**) volume API internal messages detailing volume failure messages
163164
* ``volume qos``: (**Volume**) quality-of-service (QoS) specification for volumes
164165
* ``volume snapshot``: (**Volume**) a point-in-time copy of a volume
165166
* ``volume type``: (**Volume**) deployment-specific types of volumes available

doc/source/cli/data/cinder.csv

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,9 @@ list,volume list,Lists all volumes.
7272
list-filters,,List enabled filters. (Supported by API versions 3.33 - 3.latest)
7373
manage,volume create --remote-source k=v,Manage an existing volume.
7474
manageable-list,,Lists all manageable volumes. (Supported by API versions 3.8 - 3.latest)
75-
message-delete,,Removes one or more messages. (Supported by API versions 3.3 - 3.latest)
76-
message-list,,Lists all messages. (Supported by API versions 3.3 - 3.latest)
77-
message-show,,Shows message details. (Supported by API versions 3.3 - 3.latest)
75+
message-delete,volume message delete,Removes one or more messages. (Supported by API versions 3.3 - 3.latest)
76+
message-list,volume message list,Lists all messages. (Supported by API versions 3.3 - 3.latest)
77+
message-show,volume message show,Shows message details. (Supported by API versions 3.3 - 3.latest)
7878
metadata,volume set --property k=v / volume unset --property k,Sets or deletes volume metadata.
7979
metadata-show,volume show,Shows volume metadata.
8080
metadata-update-all,volume set --property k=v,Updates volume metadata.

openstackclient/tests/unit/volume/v3/fakes.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ def __init__(self, **kwargs):
3232

3333
self.attachments = mock.Mock()
3434
self.attachments.resource_class = fakes.FakeResource(None, {})
35+
self.messages = mock.Mock()
36+
self.messages.resource_class = fakes.FakeResource(None, {})
3537
self.volumes = mock.Mock()
3638
self.volumes.resource_class = fakes.FakeResource(None, {})
3739

@@ -59,6 +61,72 @@ def setUp(self):
5961
FakeVolume = volume_v2_fakes.FakeVolume
6062

6163

64+
class FakeVolumeMessage:
65+
"""Fake one or more volume messages."""
66+
67+
@staticmethod
68+
def create_one_volume_message(attrs=None):
69+
"""Create a fake message.
70+
71+
:param attrs: A dictionary with all attributes of message
72+
:return: A FakeResource object with id, name, status, etc.
73+
"""
74+
attrs = attrs or {}
75+
76+
# Set default attribute
77+
message_info = {
78+
'created_at': '2016-02-11T11:17:37.000000',
79+
'event_id': f'VOLUME_{random.randint(1, 999999):06d}',
80+
'guaranteed_until': '2016-02-11T11:17:37.000000',
81+
'id': uuid.uuid4().hex,
82+
'message_level': 'ERROR',
83+
'request_id': f'req-{uuid.uuid4().hex}',
84+
'resource_type': 'VOLUME',
85+
'resource_uuid': uuid.uuid4().hex,
86+
'user_message': f'message-{uuid.uuid4().hex}',
87+
}
88+
89+
# Overwrite default attributes if there are some attributes set
90+
message_info.update(attrs)
91+
92+
message = fakes.FakeResource(
93+
None,
94+
message_info,
95+
loaded=True)
96+
return message
97+
98+
@staticmethod
99+
def create_volume_messages(attrs=None, count=2):
100+
"""Create multiple fake messages.
101+
102+
:param attrs: A dictionary with all attributes of message
103+
:param count: The number of messages to be faked
104+
:return: A list of FakeResource objects
105+
"""
106+
messages = []
107+
for n in range(0, count):
108+
messages.append(FakeVolumeMessage.create_one_volume_message(attrs))
109+
110+
return messages
111+
112+
@staticmethod
113+
def get_volume_messages(messages=None, count=2):
114+
"""Get an iterable MagicMock object with a list of faked messages.
115+
116+
If messages list is provided, then initialize the Mock object with the
117+
list. Otherwise create one.
118+
119+
:param messages: A list of FakeResource objects faking messages
120+
:param count: The number of messages to be faked
121+
:return An iterable Mock object with side_effect set to a list of faked
122+
messages
123+
"""
124+
if messages is None:
125+
messages = FakeVolumeMessage.create_messages(count)
126+
127+
return mock.Mock(side_effect=messages)
128+
129+
62130
class FakeVolumeAttachment:
63131
"""Fake one or more volume attachments."""
64132

0 commit comments

Comments
 (0)