diff --git a/masakari/api/openstack/ha/schemas/segments.py b/masakari/api/openstack/ha/schemas/segments.py index b2a364c3..b5b06521 100644 --- a/masakari/api/openstack/ha/schemas/segments.py +++ b/masakari/api/openstack/ha/schemas/segments.py @@ -57,4 +57,6 @@ update['properties']['segment']['anyOf'] = [{'required': ['name']}, ] update_v12 = copy.deepcopy(update) +update_v12['properties']['segment']['properties']['enabled'] = \ + parameter_types.boolean update_v12['properties']['segment']['anyOf'].append({'required': ['enabled']}) diff --git a/masakari/tests/unit/api/openstack/ha/test_segments.py b/masakari/tests/unit/api/openstack/ha/test_segments.py index 43c0a982..9e938794 100644 --- a/masakari/tests/unit/api/openstack/ha/test_segments.py +++ b/masakari/tests/unit/api/openstack/ha/test_segments.py @@ -159,6 +159,44 @@ class FailoverSegmentTestCase(test.TestCase): self.assertRaises(exc.HTTPConflict, self.controller.create, self.req, body=body) + @mock.patch('masakari.ha.api.FailoverSegmentAPI.create_segment') + def test_create_with_enabled_pre12(self, mock_create): + body = { + "segment": { + "name": "segment1", + "service_type": "COMPUTE", + "recovery_method": "auto", + "description": "failover_segment for compute", + "enabled": False + } + } + mock_create.return_value = FAILOVER_SEGMENT + self.assertRaises(self.bad_request, self.controller.create, + self.req, body=body) + mock_create.assert_not_called() + + @mock.patch('masakari.ha.api.FailoverSegmentAPI.create_segment') + def test_create_with_enabled_post12(self, mock_create): + body = { + "segment": { + "name": "segment1", + "service_type": "COMPUTE", + "recovery_method": "auto", + "description": "failover_segment for compute", + "enabled": False + } + } + req = fakes.HTTPRequest.blank('/v1/segments', + use_admin_context=True, + version='1.2') + mock_create.return_value = FAILOVER_SEGMENT + result = self.controller.create(req, body=body) + mock_create.assert_called_once() + args, kwargs = mock_create.call_args + self.assertIn(body['segment'], args + tuple(kwargs.values())) + result = result['segment'] + self.assertEqual(FAILOVER_SEGMENT, result) + @mock.patch('masakari.rpc.get_client') @mock.patch('masakari.ha.api.FailoverSegmentAPI.create_segment') def test_create_success_with_201_response_code( @@ -316,6 +354,37 @@ class FailoverSegmentTestCase(test.TestCase): self.assertRaises(exc.HTTPConflict, self.controller.update, self.req, uuidsentinel.fake_segment, body=test_data) + @mock.patch('masakari.ha.api.FailoverSegmentAPI.update_segment') + def test_update_with_enabled_pre12(self, mock_update_segment): + body = { + "segment": { + "enabled": False + } + } + mock_update_segment.return_value = FAILOVER_SEGMENT + self.assertRaises(self.bad_request, self.controller.create, + self.req, body=body) + mock_update_segment.assert_not_called() + + @mock.patch('masakari.ha.api.FailoverSegmentAPI.update_segment') + def test_update_with_enabled_post12(self, mock_update_segment): + body = { + "segment": { + "enabled": False + } + } + req = fakes.HTTPRequest.blank('/v1/segments', + use_admin_context=True, + version='1.2') + mock_update_segment.return_value = FAILOVER_SEGMENT + result = self.controller.update(req, uuidsentinel.fake_segment, + body=body) + mock_update_segment.assert_called_once() + args, kwargs = mock_update_segment.call_args + self.assertIn(body['segment'], args + tuple(kwargs.values())) + result = result['segment'] + self.assertEqual(FAILOVER_SEGMENT, result) + @mock.patch('masakari.ha.api.FailoverSegmentAPI.delete_segment') def test_delete_segment(self, mock_delete):