def test_save(self, mock_segment_update, mock_notify_about_segment_api): mock_segment_update.return_value = fake_segment segment_object = segment.FailoverSegment(context=self.context) segment_object.name = "foo-segment" segment_object.id = 123 segment_object.uuid = uuidsentinel.fake_segment segment_object.save() self.compare_obj(segment_object, fake_segment) self.assertTrue(mock_segment_update.called) action = fields.EventNotificationAction.SEGMENT_UPDATE phase_start = fields.EventNotificationPhase.START phase_end = fields.EventNotificationPhase.END notify_calls = [ mock.call(self.context, segment_object, action=action, phase=phase_start), mock.call(self.context, segment_object, action=action, phase=phase_end) ] mock_notify_about_segment_api.assert_has_calls(notify_calls)
def test_save_lazy_attribute_changed(self, mock_host_update): mock_host_update.return_value = fake_host host_obj = self._host_create_attributes() host_obj.failover_segment = (segment.FailoverSegment( context=self.context)) host_obj.id = 123 self.assertRaises(exception.ObjectActionError, host_obj.save)
def _segment_create_attribute(self): segment_obj = segment.FailoverSegment(context=self.context) segment_obj.name = 'foo-segment' segment_obj.description = 'keydata' segment_obj.service_type = 'fake-user' segment_obj.recovery_method = 'auto' segment_obj.uuid = uuidsentinel.fake_segment return segment_obj
def test_obj_make_compatible(self): segment_obj = segment.FailoverSegment(context=self.context) segment_obj.name = "foo-segment" segment_obj.id = 123 segment_obj.uuid = uuidsentinel.fake_segment segment_obj.enabled = True primitive = segment_obj.obj_to_primitive('1.1') self.assertIn('enabled', primitive['masakari_object.data']) primitive = segment_obj.obj_to_primitive('1.0') self.assertNotIn('enabled', primitive['masakari_object.data'])
def test_save_failover_segment_already_exists(self, mock_segment_update): mock_segment_update.side_effect = (exception.FailoverSegmentExists( name="foo-segment")) segment_object = segment.FailoverSegment(context=self.context) segment_object.name = "foo-segment" segment_object.id = 123 segment_object.uuid = uuidsentinel.fake_segment self.assertRaises(exception.FailoverSegmentExists, segment_object.save)
def test_save_failover_segment_not_found(self, mock_segment_update): mock_segment_update.side_effect = (exception.FailoverSegmentNotFound( id=uuidsentinel.fake_segment)) segment_object = segment.FailoverSegment(context=self.context) segment_object.name = "foo-segment" segment_object.id = 123 segment_object.uuid = uuidsentinel.fake_segment self.assertRaises(exception.FailoverSegmentNotFound, segment_object.save)
def test_save(self, mock_segment_update): mock_segment_update.return_value = fake_segment segment_object = segment.FailoverSegment(context=self.context) segment_object.name = "foo-segment" segment_object.id = 123 segment_object.uuid = uuidsentinel.fake_segment segment_object.save() self.compare_obj(segment_object, fake_segment) self.assertTrue(mock_segment_update.called)
def test_save_failover_segment_already_exists(self, mock_segment_update, mock_notify_about_segment_api): mock_segment_update.side_effect = ( exception.FailoverSegmentExists(name="foo-segment")) segment_object = segment.FailoverSegment(context=self.context) segment_object.name = "foo-segment" segment_object.id = 123 segment_object.uuid = uuidsentinel.fake_segment self.assertRaises(exception.FailoverSegmentExists, segment_object.save) action = fields.EventNotificationAction.SEGMENT_UPDATE phase_start = fields.EventNotificationPhase.START notify_calls = [ mock.call(self.context, segment_object, action=action, phase=phase_start)] mock_notify_about_segment_api.assert_has_calls(notify_calls)
def _make_segment_obj(segment_dict): return segment_obj.FailoverSegment(**segment_dict)
def _make_segments_list(segments_list): return segment_obj.FailoverSegment(objects=[ _make_segment_obj(a) for a in segments_list])
# # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or # implied. # See the License for the specific language governing permissions and # limitations under the License. from masakari.notifications.objects import base from masakari.notifications.objects import exception from masakari.notifications.objects import notification as event_notification from masakari.objects import host as host_obj from masakari.objects import notification as notification_obj from masakari.objects import segment as segment_obj segment = segment_obj.FailoverSegment() host = host_obj.Host() notification = notification_obj.Notification() fault = None init_args = { event_notification.SegmentApiPayloadBase: [segment], event_notification.SegmentApiPayload: [segment, fault], event_notification.HostApiPayloadBase: [host], event_notification.HostApiPayload: [host, fault], event_notification.NotificationApiPayloadBase: [notification], event_notification.NotificationApiPayload: [notification, fault], event_notification.SegmentApiNotification: [], event_notification.HostApiNotification: [], event_notification.NotificationApiNotification: [], exception.ExceptionPayload: [],