@@ -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):
5961FakeVolume = 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+
62130class FakeVolumeAttachment :
63131 """Fake one or more volume attachments."""
64132
0 commit comments