diff --git a/java/src/main/java/monasca/api/app/AlarmDefinitionService.java b/java/src/main/java/monasca/api/app/AlarmDefinitionService.java index 5b7626d10..37d2d2642 100644 --- a/java/src/main/java/monasca/api/app/AlarmDefinitionService.java +++ b/java/src/main/java/monasca/api/app/AlarmDefinitionService.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014 Hewlett-Packard Development Company, L.P. + * (C) Copyright 2014,2016 Hewlett Packard Enterprise Development Company LP * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at @@ -411,6 +411,7 @@ public class AlarmDefinitionService { if (!actions.isEmpty()) for (String action : actions) if (!notificationMethodRepo.exists(tenantId, action)) - throw new InvalidEntityException("No notification method exists for action %s", action); + throw monasca.api.resource.exception.Exceptions.unprocessableEntity( + "No notification method exists for action %s", action); } } diff --git a/monasca_api/common/repositories/sqla/alarm_definitions_repository.py b/monasca_api/common/repositories/sqla/alarm_definitions_repository.py index 936ee4c5a..e166cfea4 100644 --- a/monasca_api/common/repositories/sqla/alarm_definitions_repository.py +++ b/monasca_api/common/repositories/sqla/alarm_definitions_repository.py @@ -1,4 +1,4 @@ -# Copyright 2014 Hewlett-Packard +# (C) Copyright 2014,2016 Hewlett Packard Enterprise Development Company LP # Copyright 2016 FUJITSU LIMITED # # Licensed under the Apache License, Version 2.0 (the "License"); you may @@ -754,7 +754,7 @@ class AlarmDefinitionsRepository(sql_repository.SQLRepository, row = conn.execute(self.select_nm_query, b_id=action.encode('utf8')).fetchone() if row is None: - raise exceptions.RepositoryException( + raise exceptions.InvalidUpdateException( "Non-existent notification id {} submitted for {} " "notification action".format(action.encode('utf8'), alarm_state.encode('utf8'))) diff --git a/monasca_tempest_tests/tests/api/test_alarm_definitions.py b/monasca_tempest_tests/tests/api/test_alarm_definitions.py index 89a896b1d..54e812d71 100644 --- a/monasca_tempest_tests/tests/api/test_alarm_definitions.py +++ b/monasca_tempest_tests/tests/api/test_alarm_definitions.py @@ -724,6 +724,27 @@ class TestAlarmDefinitions(base.BaseMonascaTest): None, notification_id) self._delete_notification(notification_id) + @test.attr(type="gate") + @test.attr(type=['negative']) + def test_patch_alarm_definition_with_invalid_actions(self): + response_body_list = self._create_alarm_definitions( + expression=None, number_of_definitions=1) + # Patch alarm definition + self.assertRaises(exceptions.UnprocessableEntity, + self.monasca_client.patch_alarm_definition, + id=response_body_list[0]['id'], + alarm_actions=['bad_notification_id']) + + self.assertRaises(exceptions.UnprocessableEntity, + self.monasca_client.patch_alarm_definition, + id=response_body_list[0]['id'], + ok_actions=['bad_notification_id']) + + self.assertRaises(exceptions.UnprocessableEntity, + self.monasca_client.patch_alarm_definition, + id=response_body_list[0]['id'], + undetermined_actions=['bad_notification_id']) + # Delete @test.attr(type="gate")