Adds support for notification plugins in monacaapi
This review 1) Removes the hard coded notification types 2) Adds a new Rest API to get the notification types Partially-implements: blueprint notification-engine-plugin Change-Id: Ie043533974f9dcf60c77093c5d6df5eced99e68b
This commit is contained in:
parent
8c5dc5620d
commit
5a0801e9d9
@ -22,6 +22,7 @@ alarms_count = monasca_api.v2.reference.alarms:AlarmsCount
|
|||||||
alarms_state_history = monasca_api.v2.reference.alarms:AlarmsStateHistory
|
alarms_state_history = monasca_api.v2.reference.alarms:AlarmsStateHistory
|
||||||
notification_methods = monasca_api.v2.reference.notifications:Notifications
|
notification_methods = monasca_api.v2.reference.notifications:Notifications
|
||||||
dimension_values = monasca_api.v2.reference.metrics:DimensionValues
|
dimension_values = monasca_api.v2.reference.metrics:DimensionValues
|
||||||
|
notification_method_types = monasca_api.v2.reference.notificationstype:NotificationsType
|
||||||
|
|
||||||
[security]
|
[security]
|
||||||
# The roles that are allowed full access to the API.
|
# The roles that are allowed full access to the API.
|
||||||
@ -51,6 +52,10 @@ alarms_driver = monasca_api.common.repositories.sqla.alarms_repository:AlarmsRep
|
|||||||
# The driver to use for the notifications repository
|
# The driver to use for the notifications repository
|
||||||
notifications_driver = monasca_api.common.repositories.sqla.notifications_repository:NotificationsRepository
|
notifications_driver = monasca_api.common.repositories.sqla.notifications_repository:NotificationsRepository
|
||||||
|
|
||||||
|
# The driver to use for the notification method type repository
|
||||||
|
notification_method_type_driver = monasca_api.common.repositories.sqla.notification_method_type_repository:NotificationMethodTypeRepository
|
||||||
|
|
||||||
|
|
||||||
[dispatcher]
|
[dispatcher]
|
||||||
driver = v2_reference
|
driver = v2_reference
|
||||||
|
|
||||||
|
@ -163,17 +163,6 @@ Document Version: v2.0
|
|||||||
- [Status Code](#status-code-8)
|
- [Status Code](#status-code-8)
|
||||||
- [Response Body](#response-body-10)
|
- [Response Body](#response-body-10)
|
||||||
- [Response Examples](#response-examples-9)
|
- [Response Examples](#response-examples-9)
|
||||||
- [Patch Notification Method](#patch-notification-method)
|
|
||||||
- [PATCH /v2.0/notification-methods/{notification_method_id}](#put-v20notification-methodsnotification_method_id)
|
|
||||||
- [Headers](#headers-10)
|
|
||||||
- [Path Parameters](#path-parameters-10)
|
|
||||||
- [Query Parameters](#query-parameters-10)
|
|
||||||
- [Request Body](#request-body-10)
|
|
||||||
- [Request Examples](#request-examples-10)
|
|
||||||
- [Response](#response-10)
|
|
||||||
- [Status Code](#status-code-8)
|
|
||||||
- [Response Body](#response-body-10)
|
|
||||||
- [Response Examples](#response-examples-9)
|
|
||||||
- [Update Notification Method](#update-notification-method)
|
- [Update Notification Method](#update-notification-method)
|
||||||
- [PUT /v2.0/notification-methods/{notification_method_id}](#put-v20notification-methodsnotification_method_id)
|
- [PUT /v2.0/notification-methods/{notification_method_id}](#put-v20notification-methodsnotification_method_id)
|
||||||
- [Headers](#headers-11)
|
- [Headers](#headers-11)
|
||||||
@ -206,11 +195,9 @@ Document Version: v2.0
|
|||||||
- [Response](#response-13)
|
- [Response](#response-13)
|
||||||
- [Status Code](#status-code-11)
|
- [Status Code](#status-code-11)
|
||||||
- [Response Body](#response-body-13)
|
- [Response Body](#response-body-13)
|
||||||
- [Alarm Definitions](#alarm-definitions)
|
- [List supported Notification Method Types](#list-supported-notification-method-types)
|
||||||
- [Create Alarm Definition](#create-alarm-definition)
|
- [GET /v2.0/notification-methods/types/](#get-v20notification-methodstypes)
|
||||||
- [POST /v2.0/alarm-definitions](#post-v20alarm-definitions)
|
|
||||||
- [Headers](#headers-14)
|
- [Headers](#headers-14)
|
||||||
- [Path Parameters](#path-parameters-14)
|
|
||||||
- [Query Parameters](#query-parameters-14)
|
- [Query Parameters](#query-parameters-14)
|
||||||
- [Request Body](#request-body-14)
|
- [Request Body](#request-body-14)
|
||||||
- [Request Examples](#request-examples-14)
|
- [Request Examples](#request-examples-14)
|
||||||
@ -218,10 +205,11 @@ Document Version: v2.0
|
|||||||
- [Status Code](#status-code-12)
|
- [Status Code](#status-code-12)
|
||||||
- [Response Body](#response-body-14)
|
- [Response Body](#response-body-14)
|
||||||
- [Response Examples](#response-examples-12)
|
- [Response Examples](#response-examples-12)
|
||||||
- [List Alarm Definitions](#list-alarm-definitions)
|
- [Alarm Definitions](#alarm-definitions)
|
||||||
- [GET /v2.0/alarm-definitions](#get-v20alarm-definitions)
|
- [Create Alarm Definition](#create-alarm-definition)
|
||||||
|
- [POST /v2.0/alarm-definitions](#post-v20alarm-definitions)
|
||||||
- [Headers](#headers-15)
|
- [Headers](#headers-15)
|
||||||
- [Path Parameters](#path-parameters-15)
|
- [Path Parameters](#path-parameters-14)
|
||||||
- [Query Parameters](#query-parameters-15)
|
- [Query Parameters](#query-parameters-15)
|
||||||
- [Request Body](#request-body-15)
|
- [Request Body](#request-body-15)
|
||||||
- [Request Examples](#request-examples-15)
|
- [Request Examples](#request-examples-15)
|
||||||
@ -229,31 +217,31 @@ Document Version: v2.0
|
|||||||
- [Status Code](#status-code-13)
|
- [Status Code](#status-code-13)
|
||||||
- [Response Body](#response-body-15)
|
- [Response Body](#response-body-15)
|
||||||
- [Response Examples](#response-examples-13)
|
- [Response Examples](#response-examples-13)
|
||||||
- [Get Alarm Definition](#get-alarm-definition)
|
- [List Alarm Definitions](#list-alarm-definitions)
|
||||||
- [GET /v2.0/alarm-definitions/{alarm_definition_id}](#get-v20alarm-definitionsalarm_definition_id)
|
- [GET /v2.0/alarm-definitions](#get-v20alarm-definitions)
|
||||||
- [Headers](#headers-16)
|
- [Headers](#headers-16)
|
||||||
- [Path Parameters](#path-parameters-16)
|
- [Path Parameters](#path-parameters-15)
|
||||||
- [Query Parameters](#query-parameters-16)
|
- [Query Parameters](#query-parameters-16)
|
||||||
- [Request Body](#request-body-16)
|
- [Request Body](#request-body-16)
|
||||||
|
- [Request Examples](#request-examples-16)
|
||||||
- [Response](#response-16)
|
- [Response](#response-16)
|
||||||
- [Status Code](#status-code-14)
|
- [Status Code](#status-code-14)
|
||||||
- [Response Body](#response-body-16)
|
- [Response Body](#response-body-16)
|
||||||
- [Response Examples](#response-examples-14)
|
- [Response Examples](#response-examples-14)
|
||||||
- [Update Alarm Definition](#update-alarm-definition)
|
- [Get Alarm Definition](#get-alarm-definition)
|
||||||
- [PUT /v2.0/alarm-definitions/{alarm_definition_id}](#put-v20alarm-definitionsalarm_definition_id)
|
- [GET /v2.0/alarm-definitions/{alarm_definition_id}](#get-v20alarm-definitionsalarm_definition_id)
|
||||||
- [Headers](#headers-17)
|
- [Headers](#headers-17)
|
||||||
- [Path Parameters](#path-parameters-17)
|
- [Path Parameters](#path-parameters-16)
|
||||||
- [Query Parameters](#query-parameters-17)
|
- [Query Parameters](#query-parameters-17)
|
||||||
- [Request Body](#request-body-17)
|
- [Request Body](#request-body-17)
|
||||||
- [Request Examples](#request-examples-16)
|
|
||||||
- [Response](#response-17)
|
- [Response](#response-17)
|
||||||
- [Status Code](#status-code-15)
|
- [Status Code](#status-code-15)
|
||||||
- [Response Body](#response-body-17)
|
- [Response Body](#response-body-17)
|
||||||
- [Response Examples](#response-examples-15)
|
- [Response Examples](#response-examples-15)
|
||||||
- [Patch Alarm Definition](#patch-alarm-definition)
|
- [Update Alarm Definition](#update-alarm-definition)
|
||||||
- [PATCH /v2.0/alarm-definitions/{alarm_definition_id}](#patch-v20alarm-definitionsalarm_definition_id)
|
- [PUT /v2.0/alarm-definitions/{alarm_definition_id}](#put-v20alarm-definitionsalarm_definition_id)
|
||||||
- [Headers](#headers-18)
|
- [Headers](#headers-18)
|
||||||
- [Path Parameters](#path-parameters-18)
|
- [Path Parameters](#path-parameters-17)
|
||||||
- [Query Parameters](#query-parameters-18)
|
- [Query Parameters](#query-parameters-18)
|
||||||
- [Request Body](#request-body-18)
|
- [Request Body](#request-body-18)
|
||||||
- [Request Examples](#request-examples-17)
|
- [Request Examples](#request-examples-17)
|
||||||
@ -261,63 +249,63 @@ Document Version: v2.0
|
|||||||
- [Status Code](#status-code-16)
|
- [Status Code](#status-code-16)
|
||||||
- [Response Body](#response-body-18)
|
- [Response Body](#response-body-18)
|
||||||
- [Response Examples](#response-examples-16)
|
- [Response Examples](#response-examples-16)
|
||||||
- [Delete Alarm Definition](#delete-alarm-definition)
|
- [Patch Alarm Definition](#patch-alarm-definition)
|
||||||
- [DELETE /v2.0/alarm-definitions/{alarm_definition_id}](#delete-v20alarm-definitionsalarm_definition_id)
|
- [PATCH /v2.0/alarm-definitions/{alarm_definition_id}](#patch-v20alarm-definitionsalarm_definition_id)
|
||||||
- [Headers](#headers-19)
|
- [Headers](#headers-19)
|
||||||
- [Path Parameters](#path-parameters-19)
|
- [Path Parameters](#path-parameters-18)
|
||||||
- [Query Parameters](#query-parameters-19)
|
- [Query Parameters](#query-parameters-19)
|
||||||
- [Request Body](#request-body-19)
|
- [Request Body](#request-body-19)
|
||||||
- [Request Examples](#request-examples-18)
|
- [Request Examples](#request-examples-18)
|
||||||
- [Response](#response-19)
|
- [Response](#response-19)
|
||||||
- [Status Code](#status-code-17)
|
- [Status Code](#status-code-17)
|
||||||
- [Response Body](#response-body-19)
|
- [Response Body](#response-body-19)
|
||||||
- [Alarms](#alarms)
|
- [Response Examples](#response-examples-17)
|
||||||
- [List Alarms](#list-alarms)
|
- [Delete Alarm Definition](#delete-alarm-definition)
|
||||||
- [GET /v2.0/alarms](#get-v20alarms)
|
- [DELETE /v2.0/alarm-definitions/{alarm_definition_id}](#delete-v20alarm-definitionsalarm_definition_id)
|
||||||
- [Headers](#headers-20)
|
- [Headers](#headers-20)
|
||||||
- [Path Parameters](#path-parameters-20)
|
- [Path Parameters](#path-parameters-19)
|
||||||
- [Query Parameters](#query-parameters-20)
|
- [Query Parameters](#query-parameters-20)
|
||||||
- [Request Body](#request-body-20)
|
- [Request Body](#request-body-20)
|
||||||
- [Request Examples](#request-examples-19)
|
- [Request Examples](#request-examples-19)
|
||||||
- [Response](#response-20)
|
- [Response](#response-20)
|
||||||
- [Status Code](#status-code-18)
|
- [Status Code](#status-code-18)
|
||||||
- [Response Body](#response-body-20)
|
- [Response Body](#response-body-20)
|
||||||
- [Response Examples](#response-examples-17)
|
- [Alarms](#alarms)
|
||||||
- [List Alarms State History](#list-alarms-state-history)
|
- [List Alarms](#list-alarms)
|
||||||
- [GET /v2.0/alarms/state-history](#get-v20alarmsstate-history)
|
- [GET /v2.0/alarms](#get-v20alarms)
|
||||||
- [Headers](#headers-21)
|
- [Headers](#headers-21)
|
||||||
- [Path Parameters](#path-parameters-21)
|
- [Path Parameters](#path-parameters-20)
|
||||||
- [Query Parameters](#query-parameters-21)
|
- [Query Parameters](#query-parameters-21)
|
||||||
- [Request Body](#request-body-21)
|
- [Request Body](#request-body-21)
|
||||||
|
- [Request Examples](#request-examples-20)
|
||||||
- [Response](#response-21)
|
- [Response](#response-21)
|
||||||
- [Status Code](#status-code-19)
|
- [Status Code](#status-code-19)
|
||||||
- [Response Body](#response-body-21)
|
- [Response Body](#response-body-21)
|
||||||
- [Response Examples](#response-examples-18)
|
- [Response Examples](#response-examples-18)
|
||||||
- [Get Alarm](#get-alarm)
|
- [List Alarms State History](#list-alarms-state-history)
|
||||||
- [GET /v2.0/alarms/{alarm_id}](#get-v20alarmsalarm_id)
|
- [GET /v2.0/alarms/state-history](#get-v20alarmsstate-history)
|
||||||
- [Headers](#headers-22)
|
- [Headers](#headers-22)
|
||||||
- [Path Parameters](#path-parameters-22)
|
- [Path Parameters](#path-parameters-21)
|
||||||
- [Query Parameters](#query-parameters-22)
|
- [Query Parameters](#query-parameters-22)
|
||||||
- [Request Body](#request-body-22)
|
- [Request Body](#request-body-22)
|
||||||
- [Response](#response-22)
|
- [Response](#response-22)
|
||||||
- [Status Code](#status-code-20)
|
- [Status Code](#status-code-20)
|
||||||
- [Response Body](#response-body-22)
|
- [Response Body](#response-body-22)
|
||||||
- [Response Examples](#response-examples-19)
|
- [Response Examples](#response-examples-19)
|
||||||
- [Update Alarm](#update-alarm)
|
- [Get Alarm](#get-alarm)
|
||||||
- [PUT /v2.0/alarms/{alarm_id}](#put-v20alarmsalarm_id)
|
- [GET /v2.0/alarms/{alarm_id}](#get-v20alarmsalarm_id)
|
||||||
- [Headers](#headers-23)
|
- [Headers](#headers-23)
|
||||||
- [Path Parameters](#path-parameters-23)
|
- [Path Parameters](#path-parameters-22)
|
||||||
- [Query Parameters](#query-parameters-23)
|
- [Query Parameters](#query-parameters-23)
|
||||||
- [Request Body](#request-body-23)
|
- [Request Body](#request-body-23)
|
||||||
- [Request Examples](#request-examples-20)
|
|
||||||
- [Response](#response-23)
|
- [Response](#response-23)
|
||||||
- [Status Code](#status-code-21)
|
- [Status Code](#status-code-21)
|
||||||
- [Response Body](#response-body-23)
|
- [Response Body](#response-body-23)
|
||||||
- [Response Examples](#response-examples-20)
|
- [Response Examples](#response-examples-20)
|
||||||
- [Patch Alarm](#patch-alarm)
|
- [Update Alarm](#update-alarm)
|
||||||
- [PATCH /v2.0/alarms/{alarm_id}](#patch-v20alarmsalarm_id)
|
- [PUT /v2.0/alarms/{alarm_id}](#put-v20alarmsalarm_id)
|
||||||
- [Headers](#headers-24)
|
- [Headers](#headers-24)
|
||||||
- [Path Parameters](#path-parameters-24)
|
- [Path Parameters](#path-parameters-23)
|
||||||
- [Query Parameters](#query-parameters-24)
|
- [Query Parameters](#query-parameters-24)
|
||||||
- [Request Body](#request-body-24)
|
- [Request Body](#request-body-24)
|
||||||
- [Request Examples](#request-examples-21)
|
- [Request Examples](#request-examples-21)
|
||||||
@ -325,27 +313,38 @@ Document Version: v2.0
|
|||||||
- [Status Code](#status-code-22)
|
- [Status Code](#status-code-22)
|
||||||
- [Response Body](#response-body-24)
|
- [Response Body](#response-body-24)
|
||||||
- [Response Examples](#response-examples-21)
|
- [Response Examples](#response-examples-21)
|
||||||
- [Delete Alarm](#delete-alarm)
|
- [Patch Alarm](#patch-alarm)
|
||||||
- [DELETE /v2.0/alarms/{alarm_id}](#delete-v20alarmsalarm_id)
|
- [PATCH /v2.0/alarms/{alarm_id}](#patch-v20alarmsalarm_id)
|
||||||
- [Headers](#headers-25)
|
- [Headers](#headers-25)
|
||||||
- [Path Parameters](#path-parameters-25)
|
- [Path Parameters](#path-parameters-24)
|
||||||
- [Query Parameters](#query-parameters-25)
|
- [Query Parameters](#query-parameters-25)
|
||||||
- [Request Body](#request-body-25)
|
- [Request Body](#request-body-25)
|
||||||
- [Request Examples](#request-examples-22)
|
- [Request Examples](#request-examples-22)
|
||||||
- [Response](#response-25)
|
- [Response](#response-25)
|
||||||
- [Status Code](#status-code-23)
|
- [Status Code](#status-code-23)
|
||||||
- [Response Body](#response-body-25)
|
- [Response Body](#response-body-25)
|
||||||
- [List Alarm State History](#list-alarm-state-history)
|
- [Response Examples](#response-examples-22)
|
||||||
- [GET /v2.0/alarms/{alarm_id}/state-history](#get-v20alarmsalarm_idstate-history)
|
- [Delete Alarm](#delete-alarm)
|
||||||
|
- [DELETE /v2.0/alarms/{alarm_id}](#delete-v20alarmsalarm_id)
|
||||||
- [Headers](#headers-26)
|
- [Headers](#headers-26)
|
||||||
- [Path Parameters](#path-parameters-26)
|
- [Path Parameters](#path-parameters-25)
|
||||||
- [Query Parameters](#query-parameters-26)
|
- [Query Parameters](#query-parameters-26)
|
||||||
- [Request Body](#request-body-26)
|
- [Request Body](#request-body-26)
|
||||||
- [Request Data](#request-data)
|
- [Request Examples](#request-examples-23)
|
||||||
- [Response](#response-26)
|
- [Response](#response-26)
|
||||||
- [Status Code](#status-code-24)
|
- [Status Code](#status-code-24)
|
||||||
- [Response Body](#response-body-26)
|
- [Response Body](#response-body-26)
|
||||||
- [Response Examples](#response-examples-22)
|
- [List Alarm State History](#list-alarm-state-history)
|
||||||
|
- [GET /v2.0/alarms/{alarm_id}/state-history](#get-v20alarmsalarm_idstate-history)
|
||||||
|
- [Headers](#headers-27)
|
||||||
|
- [Path Parameters](#path-parameters-26)
|
||||||
|
- [Query Parameters](#query-parameters-27)
|
||||||
|
- [Request Body](#request-body-27)
|
||||||
|
- [Request Data](#request-data)
|
||||||
|
- [Response](#response-27)
|
||||||
|
- [Status Code](#status-code-25)
|
||||||
|
- [Response Body](#response-body-27)
|
||||||
|
- [Response Examples](#response-examples-23)
|
||||||
- [License](#license)
|
- [License](#license)
|
||||||
|
|
||||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||||
@ -1915,6 +1914,67 @@ Cache-Control: no-cache
|
|||||||
This request does not return a response body.
|
This request does not return a response body.
|
||||||
___
|
___
|
||||||
|
|
||||||
|
## List supported Notification Method Types
|
||||||
|
List supported notification method types.
|
||||||
|
|
||||||
|
### GET /v2.0/notification-methods/types/
|
||||||
|
|
||||||
|
#### Headers
|
||||||
|
* X-Auth-Token (string, required) - Keystone auth token
|
||||||
|
|
||||||
|
|
||||||
|
#### Query Parameters
|
||||||
|
None.
|
||||||
|
|
||||||
|
#### Request Body
|
||||||
|
None.
|
||||||
|
|
||||||
|
#### Request Examples
|
||||||
|
````
|
||||||
|
GET /v2.0/notification-methods/types
|
||||||
|
Host: 192.168.10.4:8070
|
||||||
|
X-Auth-Token: 2b8882ba2ec44295bf300aecb2caa4f7
|
||||||
|
Cache-Control: no-cache
|
||||||
|
|
||||||
|
````
|
||||||
|
|
||||||
|
### Response
|
||||||
|
|
||||||
|
#### Status Code
|
||||||
|
* 200 - OK
|
||||||
|
|
||||||
|
#### Response Body
|
||||||
|
Returns a JSON list which has list of notification types supported
|
||||||
|
|
||||||
|
* type (string) - List of notification methods
|
||||||
|
|
||||||
|
|
||||||
|
#### Response Examples
|
||||||
|
````
|
||||||
|
{
|
||||||
|
"links":[
|
||||||
|
{
|
||||||
|
"rel":"self",
|
||||||
|
"href":"http://192.168.10.6:8070/v2.0/notification-methods/types"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"elements":[
|
||||||
|
{
|
||||||
|
"type":"EMAIL"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
|
||||||
|
"type":"PAGERDUTY"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"WEBHOOK"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
````
|
||||||
|
___
|
||||||
|
|
||||||
|
|
||||||
# Alarm Definitions
|
# Alarm Definitions
|
||||||
Operations for working with alarm definitions.
|
Operations for working with alarm definitions.
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ alarms_count = monasca_api.v2.reference.alarms:AlarmsCount
|
|||||||
alarms_state_history = monasca_api.v2.reference.alarms:AlarmsStateHistory
|
alarms_state_history = monasca_api.v2.reference.alarms:AlarmsStateHistory
|
||||||
notification_methods = monasca_api.v2.reference.notifications:Notifications
|
notification_methods = monasca_api.v2.reference.notifications:Notifications
|
||||||
dimension_values = monasca_api.v2.reference.metrics:DimensionValues
|
dimension_values = monasca_api.v2.reference.metrics:DimensionValues
|
||||||
|
notification_method_types = monasca_api.v2.reference.notificationstype:NotificationsType
|
||||||
|
|
||||||
[security]
|
[security]
|
||||||
# The roles that are allowed full access to the API.
|
# The roles that are allowed full access to the API.
|
||||||
@ -51,6 +52,10 @@ alarms_driver = monasca_api.common.repositories.mysql.alarms_repository:AlarmsRe
|
|||||||
# The driver to use for the notifications repository
|
# The driver to use for the notifications repository
|
||||||
notifications_driver = monasca_api.common.repositories.mysql.notifications_repository:NotificationsRepository
|
notifications_driver = monasca_api.common.repositories.mysql.notifications_repository:NotificationsRepository
|
||||||
|
|
||||||
|
# The driver to use for the notification method type repository
|
||||||
|
notification_method_type_driver = monasca_api.common.repositories.sqla.notification_method_type_repository:NotificationMethodTypeRepository
|
||||||
|
|
||||||
|
|
||||||
[dispatcher]
|
[dispatcher]
|
||||||
driver = v2_reference
|
driver = v2_reference
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
|
* (C) Copyright 2014,2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -42,6 +42,7 @@ import monasca.api.resource.DimensionResource;
|
|||||||
import monasca.api.resource.MeasurementResource;
|
import monasca.api.resource.MeasurementResource;
|
||||||
import monasca.api.resource.MetricResource;
|
import monasca.api.resource.MetricResource;
|
||||||
import monasca.api.resource.NotificationMethodResource;
|
import monasca.api.resource.NotificationMethodResource;
|
||||||
|
import monasca.api.resource.NotificationMethodTypesResource;
|
||||||
import monasca.api.resource.StatisticResource;
|
import monasca.api.resource.StatisticResource;
|
||||||
import monasca.api.resource.VersionResource;
|
import monasca.api.resource.VersionResource;
|
||||||
import monasca.api.resource.exception.ConstraintViolationExceptionMapper;
|
import monasca.api.resource.exception.ConstraintViolationExceptionMapper;
|
||||||
@ -113,6 +114,7 @@ public class MonApiApplication extends Application<ApiConfig> {
|
|||||||
environment.jersey().register(Injector.getInstance(MeasurementResource.class));
|
environment.jersey().register(Injector.getInstance(MeasurementResource.class));
|
||||||
environment.jersey().register(Injector.getInstance(StatisticResource.class));
|
environment.jersey().register(Injector.getInstance(StatisticResource.class));
|
||||||
environment.jersey().register(Injector.getInstance(NotificationMethodResource.class));
|
environment.jersey().register(Injector.getInstance(NotificationMethodResource.class));
|
||||||
|
environment.jersey().register(Injector.getInstance(NotificationMethodTypesResource.class));
|
||||||
|
|
||||||
/** Configure providers */
|
/** Configure providers */
|
||||||
removeExceptionMappers(environment.jersey().getResourceConfig().getSingletons());
|
removeExceptionMappers(environment.jersey().getResourceConfig().getSingletons());
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
|
* (C) Copyright 2014,2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -53,6 +53,7 @@ import monasca.common.hibernate.db.MetricDefinitionDb;
|
|||||||
import monasca.common.hibernate.db.MetricDefinitionDimensionsDb;
|
import monasca.common.hibernate.db.MetricDefinitionDimensionsDb;
|
||||||
import monasca.common.hibernate.db.MetricDimensionDb;
|
import monasca.common.hibernate.db.MetricDimensionDb;
|
||||||
import monasca.common.hibernate.db.NotificationMethodDb;
|
import monasca.common.hibernate.db.NotificationMethodDb;
|
||||||
|
import monasca.common.hibernate.db.NotificationMethodTypesDb;
|
||||||
import monasca.common.hibernate.db.SubAlarmDb;
|
import monasca.common.hibernate.db.SubAlarmDb;
|
||||||
import monasca.common.hibernate.db.SubAlarmDefinitionDb;
|
import monasca.common.hibernate.db.SubAlarmDefinitionDb;
|
||||||
import monasca.common.hibernate.db.SubAlarmDefinitionDimensionDb;
|
import monasca.common.hibernate.db.SubAlarmDefinitionDimensionDb;
|
||||||
@ -117,6 +118,7 @@ public class MonApiModule
|
|||||||
configuration.addAnnotatedClass(SubAlarmDefinitionDimensionDb.class);
|
configuration.addAnnotatedClass(SubAlarmDefinitionDimensionDb.class);
|
||||||
configuration.addAnnotatedClass(SubAlarmDb.class);
|
configuration.addAnnotatedClass(SubAlarmDb.class);
|
||||||
configuration.addAnnotatedClass(NotificationMethodDb.class);
|
configuration.addAnnotatedClass(NotificationMethodDb.class);
|
||||||
|
configuration.addAnnotatedClass(NotificationMethodTypesDb.class);
|
||||||
|
|
||||||
configuration.setProperties(this.getORMProperties(this.config.hibernate.getDataSourceClassName()));
|
configuration.setProperties(this.getORMProperties(this.config.hibernate.getDataSourceClassName()));
|
||||||
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
|
ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -23,14 +23,13 @@ import java.util.List;
|
|||||||
|
|
||||||
import monasca.api.app.validation.NotificationMethodValidation;
|
import monasca.api.app.validation.NotificationMethodValidation;
|
||||||
import monasca.api.app.validation.Validation;
|
import monasca.api.app.validation.Validation;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
|
|
||||||
public class CreateNotificationMethodCommand {
|
public class CreateNotificationMethodCommand {
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
@Size(min = 1, max = 250)
|
@Size(min = 1, max = 250)
|
||||||
public String name;
|
public String name;
|
||||||
@NotNull
|
@NotNull
|
||||||
public NotificationMethodType type;
|
public String type;
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
@Size(min = 1, max = 512)
|
@Size(min = 1, max = 512)
|
||||||
public String address;
|
public String address;
|
||||||
@ -39,9 +38,9 @@ public class CreateNotificationMethodCommand {
|
|||||||
|
|
||||||
public CreateNotificationMethodCommand() {this.period = "0";}
|
public CreateNotificationMethodCommand() {this.period = "0";}
|
||||||
|
|
||||||
public CreateNotificationMethodCommand(String name, NotificationMethodType type, String address, String period) {
|
public CreateNotificationMethodCommand(String name, String notificationMethodType, String address, String period) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.type = type;
|
this.type = notificationMethodType;
|
||||||
this.address = address;
|
this.address = address;
|
||||||
period = period == null ? "0" : period;
|
period = period == null ? "0" : period;
|
||||||
this.setPeriod(period);
|
this.setPeriod(period);
|
||||||
@ -71,7 +70,10 @@ public class CreateNotificationMethodCommand {
|
|||||||
return false;
|
return false;
|
||||||
} else if (!period.equals(other.period))
|
} else if (!period.equals(other.period))
|
||||||
return false;
|
return false;
|
||||||
if (type != other.type)
|
if (type == null) {
|
||||||
|
if (other.type != null)
|
||||||
|
return false;
|
||||||
|
} else if (!type.equalsIgnoreCase(other.type))
|
||||||
return false;
|
return false;
|
||||||
if (convertedPeriod != other.convertedPeriod)
|
if (convertedPeriod != other.convertedPeriod)
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -22,12 +22,11 @@ import javax.validation.constraints.Size;
|
|||||||
|
|
||||||
import monasca.api.app.validation.NotificationMethodValidation;
|
import monasca.api.app.validation.NotificationMethodValidation;
|
||||||
import monasca.api.app.validation.Validation;
|
import monasca.api.app.validation.Validation;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
|
|
||||||
public class PatchNotificationMethodCommand {
|
public class PatchNotificationMethodCommand {
|
||||||
@Size(min = 1, max = 250)
|
@Size(min = 1, max = 250)
|
||||||
public String name;
|
public String name;
|
||||||
public NotificationMethodType type;
|
public String type;
|
||||||
@Size(min = 1, max = 512)
|
@Size(min = 1, max = 512)
|
||||||
public String address;
|
public String address;
|
||||||
public String period;
|
public String period;
|
||||||
@ -59,14 +58,17 @@ public class PatchNotificationMethodCommand {
|
|||||||
return false;
|
return false;
|
||||||
} else if (!period.equals(other.period))
|
} else if (!period.equals(other.period))
|
||||||
return false;
|
return false;
|
||||||
if (type != other.type)
|
if (type == null) {
|
||||||
|
if (other.type != null)
|
||||||
|
return false;
|
||||||
|
} else if (!type.equalsIgnoreCase(other.type))
|
||||||
return false;
|
return false;
|
||||||
if (convertedPeriod != other.convertedPeriod)
|
if (convertedPeriod != other.convertedPeriod)
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void validate(List<Integer> validPeriods) {
|
public void validate(List<Integer> validPeriods){
|
||||||
NotificationMethodValidation.validate(type, address, convertedPeriod, validPeriods);
|
NotificationMethodValidation.validate(type, address, convertedPeriod, validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -15,20 +15,20 @@ package monasca.api.app.command;
|
|||||||
|
|
||||||
import javax.validation.constraints.NotNull;
|
import javax.validation.constraints.NotNull;
|
||||||
import javax.validation.constraints.Size;
|
import javax.validation.constraints.Size;
|
||||||
|
|
||||||
import org.hibernate.validator.constraints.NotEmpty;
|
import org.hibernate.validator.constraints.NotEmpty;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import monasca.api.app.validation.NotificationMethodValidation;
|
import monasca.api.app.validation.NotificationMethodValidation;
|
||||||
import monasca.api.app.validation.Validation;
|
import monasca.api.app.validation.Validation;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
|
|
||||||
public class UpdateNotificationMethodCommand {
|
public class UpdateNotificationMethodCommand {
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
@Size(min = 1, max = 250)
|
@Size(min = 1, max = 250)
|
||||||
public String name;
|
public String name;
|
||||||
@NotNull
|
@NotNull
|
||||||
public NotificationMethodType type;
|
public String type;
|
||||||
@NotEmpty
|
@NotEmpty
|
||||||
@Size(min = 1, max = 512)
|
@Size(min = 1, max = 512)
|
||||||
public String address;
|
public String address;
|
||||||
@ -38,7 +38,7 @@ public class UpdateNotificationMethodCommand {
|
|||||||
|
|
||||||
public UpdateNotificationMethodCommand() {}
|
public UpdateNotificationMethodCommand() {}
|
||||||
|
|
||||||
public UpdateNotificationMethodCommand(String name, NotificationMethodType type, String address, String period) {
|
public UpdateNotificationMethodCommand(String name, String type, String address, String period) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.address = address;
|
this.address = address;
|
||||||
@ -69,7 +69,10 @@ public class UpdateNotificationMethodCommand {
|
|||||||
return false;
|
return false;
|
||||||
} else if (!period.equals(other.period))
|
} else if (!period.equals(other.period))
|
||||||
return false;
|
return false;
|
||||||
if (type != other.type)
|
if (type == null) {
|
||||||
|
if (other.type != null)
|
||||||
|
return false;
|
||||||
|
} else if (!type.equalsIgnoreCase(other.type))
|
||||||
return false;
|
return false;
|
||||||
if (convertedPeriod != other.convertedPeriod)
|
if (convertedPeriod != other.convertedPeriod)
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -13,7 +13,6 @@
|
|||||||
*/
|
*/
|
||||||
package monasca.api.app.validation;
|
package monasca.api.app.validation;
|
||||||
|
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
import monasca.api.resource.exception.Exceptions;
|
import monasca.api.resource.exception.Exceptions;
|
||||||
|
|
||||||
import org.apache.commons.validator.routines.EmailValidator;
|
import org.apache.commons.validator.routines.EmailValidator;
|
||||||
@ -32,26 +31,25 @@ public class NotificationMethodValidation {
|
|||||||
TEST_TLD_VALIDATOR,
|
TEST_TLD_VALIDATOR,
|
||||||
UrlValidator.ALLOW_LOCAL_URLS | UrlValidator.ALLOW_2_SLASHES);
|
UrlValidator.ALLOW_LOCAL_URLS | UrlValidator.ALLOW_2_SLASHES);
|
||||||
|
|
||||||
public static void validate(NotificationMethodType type, String address, int period,
|
public static void validate(String type, String address, int period,
|
||||||
List<Integer> validPeriods) {
|
List<Integer> validPeriods) {
|
||||||
switch (type) {
|
|
||||||
case EMAIL : {
|
if (type.equals("EMAIL")) {
|
||||||
if (!EmailValidator.getInstance(true).isValid(address))
|
if (!EmailValidator.getInstance(true).isValid(address))
|
||||||
throw Exceptions.unprocessableEntity("Address %s is not of correct format", address);
|
throw Exceptions.unprocessableEntity("Address %s is not of correct format", address);
|
||||||
if (period != 0)
|
}
|
||||||
throw Exceptions.unprocessableEntity("Period can not be non zero for Email");
|
if (type.equals("WEBHOOK")) {
|
||||||
} break;
|
|
||||||
case WEBHOOK : {
|
|
||||||
if (!URL_VALIDATOR.isValid(address))
|
if (!URL_VALIDATOR.isValid(address))
|
||||||
throw Exceptions.unprocessableEntity("Address %s is not of correct format", address);
|
throw Exceptions.unprocessableEntity("Address %s is not of correct format", address);
|
||||||
} break;
|
|
||||||
case PAGERDUTY : {
|
|
||||||
if (period != 0)
|
|
||||||
throw Exceptions.unprocessableEntity("Period can not be non zero for Pagerduty");
|
|
||||||
} break;
|
|
||||||
}
|
|
||||||
if (period != 0 && !validPeriods.contains(period)){
|
if (period != 0 && !validPeriods.contains(period)){
|
||||||
throw Exceptions.unprocessableEntity("%d is not a valid period", period);
|
throw Exceptions.unprocessableEntity("%d is not a valid period", period);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (period != 0 && !type.equals("WEBHOOK")){
|
||||||
|
throw Exceptions.unprocessableEntity("Period can not be non zero for %s", type);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -22,16 +22,16 @@ import monasca.api.domain.model.common.Linked;
|
|||||||
public class NotificationMethod extends AbstractEntity implements Linked {
|
public class NotificationMethod extends AbstractEntity implements Linked {
|
||||||
private List<Link> links;
|
private List<Link> links;
|
||||||
private String name;
|
private String name;
|
||||||
private NotificationMethodType type;
|
private String type;
|
||||||
private String address;
|
private String address;
|
||||||
private int period;
|
private int period;
|
||||||
|
|
||||||
public NotificationMethod() {}
|
public NotificationMethod() {}
|
||||||
|
|
||||||
public NotificationMethod(String id, String name, NotificationMethodType type, String address, int period) {
|
public NotificationMethod(String id, String name, String type, String address, int period) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.type = type;
|
this.type = type.toUpperCase();
|
||||||
this.address = address;
|
this.address = address;
|
||||||
this.period = period;
|
this.period = period;
|
||||||
}
|
}
|
||||||
@ -57,7 +57,10 @@ public class NotificationMethod extends AbstractEntity implements Linked {
|
|||||||
return false;
|
return false;
|
||||||
if (period != other.period)
|
if (period != other.period)
|
||||||
return false;
|
return false;
|
||||||
if (type != other.type)
|
if (type == null) {
|
||||||
|
if (other.type != null)
|
||||||
|
return false;
|
||||||
|
} else if (!type.equalsIgnoreCase(other.type))
|
||||||
return false;
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -78,7 +81,7 @@ public class NotificationMethod extends AbstractEntity implements Linked {
|
|||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public NotificationMethodType getType() {
|
public String getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,8 +116,8 @@ public class NotificationMethod extends AbstractEntity implements Linked {
|
|||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setType(NotificationMethodType type) {
|
public void setType(String type) {
|
||||||
this.type = type;
|
this.type = type.toUpperCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPeriod(int period) {
|
public void setPeriod(int period) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -21,7 +21,7 @@ import monasca.api.domain.exception.EntityNotFoundException;
|
|||||||
* Repository for notification methods.
|
* Repository for notification methods.
|
||||||
*/
|
*/
|
||||||
public interface NotificationMethodRepo {
|
public interface NotificationMethodRepo {
|
||||||
NotificationMethod create(String tenantId, String name, NotificationMethodType type,
|
NotificationMethod create(String tenantId, String name, String type,
|
||||||
String address, int period);
|
String address, int period);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -44,7 +44,7 @@ public interface NotificationMethodRepo {
|
|||||||
* {@code notificationMethodId}
|
* {@code notificationMethodId}
|
||||||
*/
|
*/
|
||||||
NotificationMethod update(String tenantId, String notificationMethodId, String name,
|
NotificationMethod update(String tenantId, String notificationMethodId, String name,
|
||||||
NotificationMethodType type, String address, int period);
|
String type, String address, int period);
|
||||||
|
|
||||||
List<NotificationMethod> find(String tenantId, List<String> sortBy, String offset, int limit);
|
List<NotificationMethod> find(String tenantId, List<String> sortBy, String offset, int limit);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -13,13 +13,58 @@
|
|||||||
*/
|
*/
|
||||||
package monasca.api.domain.model.notificationmethod;
|
package monasca.api.domain.model.notificationmethod;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonCreator;
|
import java.util.List;
|
||||||
|
|
||||||
|
import monasca.api.domain.model.common.Link;
|
||||||
|
import monasca.api.domain.model.common.Linked;
|
||||||
|
import monasca.common.model.domain.common.AbstractEntity;
|
||||||
|
|
||||||
|
public class NotificationMethodType extends AbstractEntity{
|
||||||
|
|
||||||
|
private String type;
|
||||||
|
|
||||||
|
|
||||||
|
public NotificationMethodType() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public NotificationMethodType(String type) {
|
||||||
|
this.type = type.toUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getType() {
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setType(String type) {
|
||||||
|
this.type = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getId() {return type;}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
final int prime = 31;
|
||||||
|
int result = super.hashCode();
|
||||||
|
result = prime * result + ((type == null) ? 0 : type.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object obj) {
|
||||||
|
if (this == obj)
|
||||||
|
return true;
|
||||||
|
if (!super.equals(obj))
|
||||||
|
return false;
|
||||||
|
if (getClass() != obj.getClass())
|
||||||
|
return false;
|
||||||
|
NotificationMethodType other = (NotificationMethodType) obj;
|
||||||
|
if (type == null) {
|
||||||
|
if (other.type != null)
|
||||||
|
return false;
|
||||||
|
} else if (!type.equals(other.type))
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
public enum NotificationMethodType {
|
|
||||||
EMAIL, WEBHOOK, PAGERDUTY;
|
|
||||||
|
|
||||||
@JsonCreator
|
|
||||||
public static NotificationMethodType fromJson(String text) {
|
|
||||||
return valueOf(text.toUpperCase());
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
|
* (C) Copyright 2014,2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -11,11 +11,16 @@
|
|||||||
* or implied. See the License for the specific language governing permissions and limitations under
|
* or implied. See the License for the specific language governing permissions and limitations under
|
||||||
* the License.
|
* the License.
|
||||||
*/
|
*/
|
||||||
|
package monasca.api.domain.model.notificationmethod;
|
||||||
|
|
||||||
package monasca.api;
|
import java.util.List;
|
||||||
|
|
||||||
public class MonApiApplicationRunner {
|
|
||||||
public static void main(String... args) throws Exception {
|
|
||||||
MonApiApplication.main(new String[] {"server", "config-local.yml"});
|
/**
|
||||||
}
|
* Repository for notification methods.
|
||||||
|
*/
|
||||||
|
public interface NotificationMethodTypesRepo {
|
||||||
|
|
||||||
|
List<String> listNotificationMethodTypes();
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
|
* (C) Copyright 2014,2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -13,11 +13,11 @@
|
|||||||
*/
|
*/
|
||||||
package monasca.api.infrastructure;
|
package monasca.api.infrastructure;
|
||||||
|
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import com.google.inject.AbstractModule;
|
import com.google.inject.AbstractModule;
|
||||||
import com.google.inject.ProvisionException;
|
import com.google.inject.ProvisionException;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
|
||||||
|
|
||||||
import monasca.api.ApiConfig;
|
import monasca.api.ApiConfig;
|
||||||
import monasca.api.domain.model.alarm.AlarmRepo;
|
import monasca.api.domain.model.alarm.AlarmRepo;
|
||||||
import monasca.api.domain.model.alarmdefinition.AlarmDefinitionRepo;
|
import monasca.api.domain.model.alarmdefinition.AlarmDefinitionRepo;
|
||||||
@ -26,9 +26,15 @@ import monasca.api.domain.model.dimension.DimensionRepo;
|
|||||||
import monasca.api.domain.model.measurement.MeasurementRepo;
|
import monasca.api.domain.model.measurement.MeasurementRepo;
|
||||||
import monasca.api.domain.model.metric.MetricDefinitionRepo;
|
import monasca.api.domain.model.metric.MetricDefinitionRepo;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
||||||
|
import monasca.api.domain.model.notificationmethod.NotificationMethodTypesRepo;
|
||||||
import monasca.api.domain.model.statistic.StatisticRepo;
|
import monasca.api.domain.model.statistic.StatisticRepo;
|
||||||
import monasca.api.infrastructure.persistence.PersistUtils;
|
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||||
import monasca.api.infrastructure.persistence.Utils;
|
import monasca.api.infrastructure.persistence.Utils;
|
||||||
|
import monasca.api.infrastructure.persistence.hibernate.AlarmDefinitionSqlRepoImpl;
|
||||||
|
import monasca.api.infrastructure.persistence.hibernate.AlarmHibernateUtils;
|
||||||
|
import monasca.api.infrastructure.persistence.hibernate.AlarmSqlRepoImpl;
|
||||||
|
import monasca.api.infrastructure.persistence.hibernate.NotificationMethodSqlRepoImpl;
|
||||||
|
import monasca.api.infrastructure.persistence.hibernate.NotificationMethodTypesSqlRepoImpl;
|
||||||
import monasca.api.infrastructure.persistence.influxdb.InfluxV9AlarmStateHistoryRepo;
|
import monasca.api.infrastructure.persistence.influxdb.InfluxV9AlarmStateHistoryRepo;
|
||||||
import monasca.api.infrastructure.persistence.influxdb.InfluxV9DimensionRepo;
|
import monasca.api.infrastructure.persistence.influxdb.InfluxV9DimensionRepo;
|
||||||
import monasca.api.infrastructure.persistence.influxdb.InfluxV9MeasurementRepo;
|
import monasca.api.infrastructure.persistence.influxdb.InfluxV9MeasurementRepo;
|
||||||
@ -40,10 +46,7 @@ import monasca.api.infrastructure.persistence.mysql.AlarmDefinitionMySqlRepoImpl
|
|||||||
import monasca.api.infrastructure.persistence.mysql.AlarmMySqlRepoImpl;
|
import monasca.api.infrastructure.persistence.mysql.AlarmMySqlRepoImpl;
|
||||||
import monasca.api.infrastructure.persistence.mysql.MySQLUtils;
|
import monasca.api.infrastructure.persistence.mysql.MySQLUtils;
|
||||||
import monasca.api.infrastructure.persistence.mysql.NotificationMethodMySqlRepoImpl;
|
import monasca.api.infrastructure.persistence.mysql.NotificationMethodMySqlRepoImpl;
|
||||||
import monasca.api.infrastructure.persistence.hibernate.AlarmDefinitionSqlRepoImpl;
|
import monasca.api.infrastructure.persistence.mysql.NotificationMethodTypesMySqlRepoImpl;
|
||||||
import monasca.api.infrastructure.persistence.hibernate.AlarmSqlRepoImpl;
|
|
||||||
import monasca.api.infrastructure.persistence.hibernate.NotificationMethodSqlRepoImpl;
|
|
||||||
import monasca.api.infrastructure.persistence.hibernate.AlarmHibernateUtils;
|
|
||||||
import monasca.api.infrastructure.persistence.vertica.AlarmStateHistoryVerticaRepoImpl;
|
import monasca.api.infrastructure.persistence.vertica.AlarmStateHistoryVerticaRepoImpl;
|
||||||
import monasca.api.infrastructure.persistence.vertica.DimensionVerticaRepoImpl;
|
import monasca.api.infrastructure.persistence.vertica.DimensionVerticaRepoImpl;
|
||||||
import monasca.api.infrastructure.persistence.vertica.MeasurementVerticaRepoImpl;
|
import monasca.api.infrastructure.persistence.vertica.MeasurementVerticaRepoImpl;
|
||||||
@ -77,10 +80,12 @@ public class InfrastructureModule extends AbstractModule {
|
|||||||
this.bind(AlarmRepo.class).to(AlarmSqlRepoImpl.class).in(Singleton.class);
|
this.bind(AlarmRepo.class).to(AlarmSqlRepoImpl.class).in(Singleton.class);
|
||||||
this.bind(AlarmDefinitionRepo.class).to(AlarmDefinitionSqlRepoImpl.class).in(Singleton.class);
|
this.bind(AlarmDefinitionRepo.class).to(AlarmDefinitionSqlRepoImpl.class).in(Singleton.class);
|
||||||
this.bind(NotificationMethodRepo.class).to(NotificationMethodSqlRepoImpl.class).in(Singleton.class);
|
this.bind(NotificationMethodRepo.class).to(NotificationMethodSqlRepoImpl.class).in(Singleton.class);
|
||||||
|
this.bind(NotificationMethodTypesRepo.class).to(NotificationMethodTypesSqlRepoImpl.class).in(Singleton.class);
|
||||||
} else {
|
} else {
|
||||||
bind(AlarmRepo.class).to(AlarmMySqlRepoImpl.class).in(Singleton.class);
|
bind(AlarmRepo.class).to(AlarmMySqlRepoImpl.class).in(Singleton.class);
|
||||||
bind(AlarmDefinitionRepo.class).to(AlarmDefinitionMySqlRepoImpl.class).in(Singleton.class);
|
bind(AlarmDefinitionRepo.class).to(AlarmDefinitionMySqlRepoImpl.class).in(Singleton.class);
|
||||||
bind(NotificationMethodRepo.class).to(NotificationMethodMySqlRepoImpl.class).in(Singleton.class);
|
bind(NotificationMethodRepo.class).to(NotificationMethodMySqlRepoImpl.class).in(Singleton.class);
|
||||||
|
bind(NotificationMethodTypesRepo.class).to(NotificationMethodTypesMySqlRepoImpl.class).in(Singleton.class);
|
||||||
bind(PersistUtils.class).in(Singleton.class);
|
bind(PersistUtils.class).in(Singleton.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2015 FUJITSU LIMITED
|
* Copyright 2015 FUJITSU LIMITED
|
||||||
* (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -34,7 +34,6 @@ import monasca.api.domain.exception.EntityExistsException;
|
|||||||
import monasca.api.domain.exception.EntityNotFoundException;
|
import monasca.api.domain.exception.EntityNotFoundException;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
import monasca.api.resource.exception.Exceptions;
|
import monasca.api.resource.exception.Exceptions;
|
||||||
import monasca.common.hibernate.db.NotificationMethodDb;
|
import monasca.common.hibernate.db.NotificationMethodDb;
|
||||||
import monasca.common.model.alarm.AlarmNotificationMethodType;
|
import monasca.common.model.alarm.AlarmNotificationMethodType;
|
||||||
@ -53,7 +52,7 @@ public class NotificationMethodSqlRepoImpl
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NotificationMethod create(String tenantId, String name, NotificationMethodType type,
|
public NotificationMethod create(String tenantId, String name, String notificationMethodType,
|
||||||
String address, int period) {
|
String address, int period) {
|
||||||
Transaction tx = null;
|
Transaction tx = null;
|
||||||
Session session = null;
|
Session session = null;
|
||||||
@ -72,7 +71,7 @@ public class NotificationMethodSqlRepoImpl
|
|||||||
id,
|
id,
|
||||||
tenantId,
|
tenantId,
|
||||||
name,
|
name,
|
||||||
AlarmNotificationMethodType.valueOf(type.name()),
|
AlarmNotificationMethodType.valueOf(notificationMethodType),
|
||||||
address,
|
address,
|
||||||
period,
|
period,
|
||||||
now,
|
now,
|
||||||
@ -160,7 +159,7 @@ public class NotificationMethodSqlRepoImpl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NotificationMethod update(String tenantId, String notificationMethodId, String name,
|
public NotificationMethod update(String tenantId, String notificationMethodId, String name,
|
||||||
NotificationMethodType type, String address, int period) {
|
String notificationMethodType, String address, int period) {
|
||||||
Session session = null;
|
Session session = null;
|
||||||
Transaction tx = null;
|
Transaction tx = null;
|
||||||
try {
|
try {
|
||||||
@ -180,7 +179,7 @@ public class NotificationMethodSqlRepoImpl
|
|||||||
notificationMethodId);
|
notificationMethodId);
|
||||||
}
|
}
|
||||||
db.setName(name);
|
db.setName(name);
|
||||||
db.setType(AlarmNotificationMethodType.valueOf(type.name()));
|
db.setType(AlarmNotificationMethodType.valueOf(notificationMethodType));
|
||||||
db.setAddress(address);
|
db.setAddress(address);
|
||||||
db.setPeriod(period);
|
db.setPeriod(period);
|
||||||
db.setUpdatedAt(this.getUTCNow());
|
db.setUpdatedAt(this.getUTCNow());
|
||||||
@ -272,7 +271,7 @@ public class NotificationMethodSqlRepoImpl
|
|||||||
return db == null ? null : new NotificationMethod(
|
return db == null ? null : new NotificationMethod(
|
||||||
db.getId(),
|
db.getId(),
|
||||||
db.getName(),
|
db.getName(),
|
||||||
NotificationMethodType.valueOf(db.getType().name()),
|
db.getType().name(),
|
||||||
db.getAddress(),
|
db.getAddress(),
|
||||||
db.getPeriod()
|
db.getPeriod()
|
||||||
);
|
);
|
||||||
|
@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
package monasca.api.infrastructure.persistence.hibernate;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
|
|
||||||
|
import org.hibernate.Query;
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.SessionFactory;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import monasca.api.domain.model.notificationmethod.NotificationMethodTypesRepo;
|
||||||
|
import monasca.common.hibernate.db.NotificationMethodTypesDb;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notification method repository implementation.
|
||||||
|
*/
|
||||||
|
public class NotificationMethodTypesSqlRepoImpl
|
||||||
|
extends BaseSqlRepo
|
||||||
|
implements NotificationMethodTypesRepo {
|
||||||
|
private static final Logger LOG = LoggerFactory.getLogger(NotificationMethodTypesSqlRepoImpl.class);
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public NotificationMethodTypesSqlRepoImpl(@Named("orm") SessionFactory sessionFactory) {
|
||||||
|
super(sessionFactory);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public List<String> listNotificationMethodTypes() {
|
||||||
|
|
||||||
|
Session session = null;
|
||||||
|
List<String> notification_method_types = new ArrayList<String>();
|
||||||
|
|
||||||
|
try {
|
||||||
|
session = sessionFactory.openSession();
|
||||||
|
//Query q = session.createSQLQuery("Select * from notification_method_type").addEntity(String.class);
|
||||||
|
Query q = session.createQuery("from NotificationMethodTypesDb");
|
||||||
|
|
||||||
|
List<NotificationMethodTypesDb> resultList = q.list();
|
||||||
|
for (NotificationMethodTypesDb type : resultList){
|
||||||
|
notification_method_types.add(type.getName());
|
||||||
|
}
|
||||||
|
return notification_method_types;
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
if (session != null) {
|
||||||
|
session.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -32,7 +32,6 @@ import monasca.api.domain.exception.EntityExistsException;
|
|||||||
import monasca.api.domain.exception.EntityNotFoundException;
|
import monasca.api.domain.exception.EntityNotFoundException;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
import monasca.api.infrastructure.persistence.PersistUtils;
|
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||||
import monasca.common.persistence.BeanMapper;
|
import monasca.common.persistence.BeanMapper;
|
||||||
|
|
||||||
@ -54,20 +53,25 @@ public class NotificationMethodMySqlRepoImpl implements NotificationMethodRepo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NotificationMethod create(String tenantId, String name,
|
public NotificationMethod create(String tenantId, String name,
|
||||||
NotificationMethodType type, String address, int period) {
|
String notificationMethodType, String address, int period) {
|
||||||
try (Handle h = db.open()) {
|
try (Handle h = db.open()) {
|
||||||
h.begin();
|
h.begin();
|
||||||
if (getNotificationIdForTenantIdAndName(h,tenantId, name) != null)
|
if (getNotificationIdForTenantIdAndName(h,tenantId, name) != null)
|
||||||
throw new EntityExistsException(
|
throw new EntityExistsException(
|
||||||
"Notification method %s \"%s\" already exists.", tenantId, name);
|
"Notification method %s \"%s\" already exists.", tenantId, name);
|
||||||
|
|
||||||
|
if(!isValidNotificationMethodType(h, notificationMethodType)){
|
||||||
|
throw new EntityNotFoundException(
|
||||||
|
"Not a valid notification method type %s ", notificationMethodType);
|
||||||
|
}
|
||||||
|
|
||||||
String id = UUID.randomUUID().toString();
|
String id = UUID.randomUUID().toString();
|
||||||
h.insert(
|
h.insert(
|
||||||
"insert into notification_method (id, tenant_id, name, type, address, period, created_at, updated_at) values (?, ?, ?, ?, ?, ?, NOW(), NOW())",
|
"insert into notification_method (id, tenant_id, name, type, address, period, created_at, updated_at) values (?, ?, ?, ?, ?, ?, NOW(), NOW())",
|
||||||
id, tenantId, name, type.toString(), address, period);
|
id, tenantId, name, notificationMethodType, address, period);
|
||||||
LOG.debug("Creating notification method {} for {}", name, tenantId);
|
LOG.debug("Creating notification method {} for {}", name, tenantId);
|
||||||
h.commit();
|
h.commit();
|
||||||
return new NotificationMethod(id, name, type, address, period);
|
return new NotificationMethod(id, name, notificationMethodType, address, period);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,6 +109,23 @@ public class NotificationMethodMySqlRepoImpl implements NotificationMethodRepo {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isValidNotificationMethodType(Handle h ,String notificationMethod){
|
||||||
|
|
||||||
|
String query = " SELECT name from notification_method_type";
|
||||||
|
|
||||||
|
Query<Map<String, Object>> q = h.createQuery(query);
|
||||||
|
List<Map<String, Object>> result = q.list();
|
||||||
|
|
||||||
|
|
||||||
|
for (Map<String, Object> m : result) {
|
||||||
|
String method = (String)m.get("name");
|
||||||
|
if (method.equalsIgnoreCase(notificationMethod))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<NotificationMethod> find(String tenantId, List<String> sortBy, String offset,
|
public List<NotificationMethod> find(String tenantId, List<String> sortBy, String offset,
|
||||||
int limit) {
|
int limit) {
|
||||||
@ -174,7 +195,7 @@ public class NotificationMethodMySqlRepoImpl implements NotificationMethodRepo {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NotificationMethod update(String tenantId, String notificationMethodId, String name,
|
public NotificationMethod update(String tenantId, String notificationMethodId, String name,
|
||||||
NotificationMethodType type, String address, int period) {
|
String notificationMethodType, String address, int period) {
|
||||||
try (Handle h = db.open()) {
|
try (Handle h = db.open()) {
|
||||||
h.begin();
|
h.begin();
|
||||||
String notificationID = getNotificationIdForTenantIdAndName(h,tenantId, name);
|
String notificationID = getNotificationIdForTenantIdAndName(h,tenantId, name);
|
||||||
@ -182,16 +203,20 @@ public class NotificationMethodMySqlRepoImpl implements NotificationMethodRepo {
|
|||||||
throw new EntityExistsException("Notification method %s \"%s\" already exists.",
|
throw new EntityExistsException("Notification method %s \"%s\" already exists.",
|
||||||
tenantId, name);
|
tenantId, name);
|
||||||
}
|
}
|
||||||
|
if(!isValidNotificationMethodType(h, notificationMethodType)){
|
||||||
|
throw new EntityNotFoundException(
|
||||||
|
"Not a valid notification method type %s ", notificationMethodType);
|
||||||
|
}
|
||||||
|
|
||||||
if (h
|
if (h
|
||||||
.update(
|
.update(
|
||||||
"update notification_method set name = ?, type = ?, address = ?, period = ?, updated_at = NOW() "
|
"update notification_method set name = ?, type = ?, address = ?, period = ?, updated_at = NOW() "
|
||||||
+ "where tenant_id = ? and id = ?",
|
+ "where tenant_id = ? and id = ?",
|
||||||
name, type.name(), address, period, tenantId, notificationMethodId) == 0)
|
name, notificationMethodType, address, period, tenantId, notificationMethodId) == 0)
|
||||||
throw new EntityNotFoundException("No notification method exists for %s",
|
throw new EntityNotFoundException("No notification method exists for %s",
|
||||||
notificationMethodId);
|
notificationMethodId);
|
||||||
h.commit();
|
h.commit();
|
||||||
return new NotificationMethod(notificationMethodId, name, type, address, period);
|
return new NotificationMethod(notificationMethodId, name, notificationMethodType, address, period);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
package monasca.api.infrastructure.persistence.mysql;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Named;
|
||||||
|
|
||||||
|
import org.skife.jdbi.v2.DBI;
|
||||||
|
import org.skife.jdbi.v2.Handle;
|
||||||
|
import org.skife.jdbi.v2.Query;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
import monasca.api.domain.model.notificationmethod.NotificationMethodTypesRepo;
|
||||||
|
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notification method repository implementation.
|
||||||
|
*/
|
||||||
|
public class NotificationMethodTypesMySqlRepoImpl implements NotificationMethodTypesRepo {
|
||||||
|
private static final Logger LOG = LoggerFactory
|
||||||
|
.getLogger(NotificationMethodTypesMySqlRepoImpl.class);
|
||||||
|
|
||||||
|
private final DBI db;
|
||||||
|
private final PersistUtils persistUtils;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public NotificationMethodTypesMySqlRepoImpl(@Named("mysql") DBI db, PersistUtils persistUtils) {
|
||||||
|
this.db = db;
|
||||||
|
this.persistUtils = persistUtils;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> listNotificationMethodTypes() {
|
||||||
|
|
||||||
|
List<String> notification_method_types = new ArrayList<String>();
|
||||||
|
try (Handle h = db.open()) {
|
||||||
|
|
||||||
|
String query = " SELECT name from notification_method_type";
|
||||||
|
|
||||||
|
Query<Map<String, Object>> q = h.createQuery(query);
|
||||||
|
List<Map<String, Object>> result = q.list();
|
||||||
|
|
||||||
|
for (Map<String, Object> m : result) {
|
||||||
|
notification_method_types.add((String)m.get("name"));
|
||||||
|
}
|
||||||
|
return notification_method_types;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -45,7 +45,6 @@ import monasca.api.app.validation.NotificationMethodValidation;
|
|||||||
import monasca.api.app.validation.Validation;
|
import monasca.api.app.validation.Validation;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
import monasca.api.infrastructure.persistence.PersistUtils;
|
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||||
import monasca.api.resource.annotation.PATCH;
|
import monasca.api.resource.annotation.PATCH;
|
||||||
|
|
||||||
@ -59,6 +58,7 @@ public class NotificationMethodResource {
|
|||||||
private final static List<String> ALLOWED_SORT_BY = Arrays.asList("id", "name", "type",
|
private final static List<String> ALLOWED_SORT_BY = Arrays.asList("id", "name", "type",
|
||||||
"address", "updated_at",
|
"address", "updated_at",
|
||||||
"created_at");
|
"created_at");
|
||||||
|
|
||||||
private final List<Integer> validPeriods;
|
private final List<Integer> validPeriods;
|
||||||
|
|
||||||
|
|
||||||
@ -69,6 +69,7 @@ public class NotificationMethodResource {
|
|||||||
this.persistUtils = persistUtils;
|
this.persistUtils = persistUtils;
|
||||||
this.validPeriods = config.validNotificationPeriods == null ? Arrays.asList(0, 60):
|
this.validPeriods = config.validNotificationPeriods == null ? Arrays.asList(0, 60):
|
||||||
config.validNotificationPeriods;
|
config.validNotificationPeriods;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@POST
|
@POST
|
||||||
@ -145,7 +146,7 @@ public class NotificationMethodResource {
|
|||||||
NotificationMethod originalNotificationMethod = repo.findById(tenantId, notificationMethodId);
|
NotificationMethod originalNotificationMethod = repo.findById(tenantId, notificationMethodId);
|
||||||
String name = command.name == null ? originalNotificationMethod.getName()
|
String name = command.name == null ? originalNotificationMethod.getName()
|
||||||
: command.name;
|
: command.name;
|
||||||
NotificationMethodType type = command.type == null ? originalNotificationMethod.getType()
|
String type = command.type == null ? originalNotificationMethod.getType()
|
||||||
: command.type;
|
: command.type;
|
||||||
String address = command.address == null ? originalNotificationMethod.getAddress()
|
String address = command.address == null ? originalNotificationMethod.getAddress()
|
||||||
: command.address;
|
: command.address;
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
/*
|
||||||
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
package monasca.api.resource;
|
||||||
|
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
import javax.ws.rs.Produces;
|
||||||
|
import javax.ws.rs.QueryParam;
|
||||||
|
import javax.ws.rs.core.Context;
|
||||||
|
import javax.ws.rs.core.MediaType;
|
||||||
|
import javax.ws.rs.core.UriInfo;
|
||||||
|
|
||||||
|
import com.codahale.metrics.annotation.Timed;
|
||||||
|
|
||||||
|
import monasca.api.ApiConfig;
|
||||||
|
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
||||||
|
import monasca.api.domain.model.notificationmethod.NotificationMethodTypesRepo;
|
||||||
|
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notification Method resource implementation.
|
||||||
|
*/
|
||||||
|
@Path("/v2.0/notification-methods/types")
|
||||||
|
public class NotificationMethodTypesResource {
|
||||||
|
|
||||||
|
|
||||||
|
NotificationMethodTypesRepo repo = null;
|
||||||
|
private final PersistUtils persistUtils;
|
||||||
|
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
public NotificationMethodTypesResource(ApiConfig config, NotificationMethodTypesRepo repo,
|
||||||
|
PersistUtils persistUtils) {
|
||||||
|
this.repo = repo;
|
||||||
|
this.persistUtils = persistUtils;
|
||||||
|
}
|
||||||
|
|
||||||
|
@GET
|
||||||
|
@Timed
|
||||||
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
public Object list(@Context UriInfo uriInfo, @QueryParam("sort_by") String sortByStr,
|
||||||
|
@QueryParam("offset") String offset,
|
||||||
|
@QueryParam("limit") String limit) throws UnsupportedEncodingException {
|
||||||
|
|
||||||
|
List<NotificationMethodType> resources = new ArrayList<NotificationMethodType>();
|
||||||
|
for (String method_type: repo.listNotificationMethodTypes()){
|
||||||
|
resources.add(new NotificationMethodType(method_type));
|
||||||
|
}
|
||||||
|
|
||||||
|
final int paging_limit = this.persistUtils.getLimit(limit);
|
||||||
|
return Links.paginate(paging_limit, resources, uriInfo);
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
|
* (C) Copyright 2014,2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -35,11 +35,15 @@ import com.fasterxml.jackson.databind.JsonMappingException;
|
|||||||
|
|
||||||
import monasca.api.app.command.CreateNotificationMethodCommand;
|
import monasca.api.app.command.CreateNotificationMethodCommand;
|
||||||
import monasca.api.domain.model.AbstractModelTest;
|
import monasca.api.domain.model.AbstractModelTest;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public class CreateNotificationMethodTest extends AbstractModelTest {
|
public class CreateNotificationMethodTest extends AbstractModelTest {
|
||||||
|
|
||||||
|
private static final String NOTIFICATION_METHOD_WEBHOOK = "WEBHOOK";
|
||||||
|
private static final String NOTIFICATION_METHOD_EMAIL = "EMAIL";
|
||||||
|
private static final String NOTIFICATION_METHOD_PAGERDUTY = "PAGERDUTY";
|
||||||
|
|
||||||
private static Validator validator;
|
private static Validator validator;
|
||||||
private List<Integer> validPeriods = Arrays.asList(0, 60);
|
private List<Integer> validPeriods = Arrays.asList(0, 60);
|
||||||
|
|
||||||
@ -51,7 +55,7 @@ public class CreateNotificationMethodTest extends AbstractModelTest {
|
|||||||
|
|
||||||
public void shouldDeserializeFromJson() throws Exception {
|
public void shouldDeserializeFromJson() throws Exception {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "a@b", "0");
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "a@b", "0");
|
||||||
|
|
||||||
String json = jsonFixture("fixtures/newNotificationMethod.json");
|
String json = jsonFixture("fixtures/newNotificationMethod.json");
|
||||||
CreateNotificationMethodCommand other = fromJson(json, CreateNotificationMethodCommand.class);
|
CreateNotificationMethodCommand other = fromJson(json, CreateNotificationMethodCommand.class);
|
||||||
@ -60,7 +64,7 @@ public class CreateNotificationMethodTest extends AbstractModelTest {
|
|||||||
|
|
||||||
public void shouldDeserializeFromJsonLowerCaseEnum() throws Exception {
|
public void shouldDeserializeFromJsonLowerCaseEnum() throws Exception {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "a@b", "0");
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "a@b", "0");
|
||||||
|
|
||||||
String json = jsonFixture("fixtures/newNotificationMethodWithLowercaseEnum.json");
|
String json = jsonFixture("fixtures/newNotificationMethodWithLowercaseEnum.json");
|
||||||
CreateNotificationMethodCommand other = fromJson(json, CreateNotificationMethodCommand.class);
|
CreateNotificationMethodCommand other = fromJson(json, CreateNotificationMethodCommand.class);
|
||||||
@ -69,17 +73,17 @@ public class CreateNotificationMethodTest extends AbstractModelTest {
|
|||||||
|
|
||||||
public void shouldDeserializeFromJsonDefinedPeriod() throws Exception {
|
public void shouldDeserializeFromJsonDefinedPeriod() throws Exception {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://somedomain.com", "60");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://somedomain.com", "60");
|
||||||
|
|
||||||
String json = jsonFixture("fixtures/newNotificationMethodWithPeriod.json");
|
String json = jsonFixture("fixtures/newNotificationMethodWithPeriod.json");
|
||||||
CreateNotificationMethodCommand other = fromJson(json, CreateNotificationMethodCommand.class);
|
CreateNotificationMethodCommand other = fromJson(json, CreateNotificationMethodCommand.class);
|
||||||
assertEquals(other, newNotificationMethod);
|
assertEquals(other, newNotificationMethod);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = JsonMappingException.class)
|
@Test(expectedExceptions = java.lang.AssertionError.class)
|
||||||
public void shouldDeserializeFromJsonEnumError() throws Exception {
|
public void shouldDeserializeFromJsonEnumError() throws Exception {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "a@b", "0");
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "a@b", "0");
|
||||||
|
|
||||||
String json = jsonFixture("fixtures/newNotificationMethodWithInvalidEnum.json");
|
String json = jsonFixture("fixtures/newNotificationMethodWithInvalidEnum.json");
|
||||||
CreateNotificationMethodCommand other = fromJson(json, CreateNotificationMethodCommand.class);
|
CreateNotificationMethodCommand other = fromJson(json, CreateNotificationMethodCommand.class);
|
||||||
@ -88,94 +92,94 @@ public class CreateNotificationMethodTest extends AbstractModelTest {
|
|||||||
|
|
||||||
public void testValidationForEmail() {
|
public void testValidationForEmail() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "name@domain.com", "0");
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "name@domain.com", "0");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = WebApplicationException.class)
|
@Test(expectedExceptions = WebApplicationException.class)
|
||||||
public void testValidationExceptionForEmail() throws Exception {
|
public void testValidationExceptionForEmail() throws Exception {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "name@domain.", "0");
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "name@domain.", "0");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = WebApplicationException.class)
|
@Test(expectedExceptions = WebApplicationException.class)
|
||||||
public void testValidationExceptionForNonZeroPeriodForEmail() {
|
public void testValidationExceptionForNonZeroPeriodForEmail() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "name@domain.", "60");
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "name@domain.", "60");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testValidationForWebhook() {
|
public void testValidationForWebhook() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://somedomain.com", "0");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://somedomain.com", "0");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testValidationNonZeroPeriodForWebhook() {
|
public void testValidationNonZeroPeriodForWebhook() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://somedomain.com", "60");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://somedomain.com", "60");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testValidationTestDomainForWebhook() {
|
public void testValidationTestDomainForWebhook() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://test.test", "60");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://test.test", "60");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testValidationTestDomainWithPortForWebhook() {
|
public void testValidationTestDomainWithPortForWebhook() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://test.test:4522", "60");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://test.test:4522", "60");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = WebApplicationException.class)
|
@Test(expectedExceptions = WebApplicationException.class)
|
||||||
public void testValidationInvalidTestDomainForWebhook() {
|
public void testValidationInvalidTestDomainForWebhook() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://test.invalid:4522", "60");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://test.invalid:4522", "60");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods );
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = WebApplicationException.class)
|
@Test(expectedExceptions = WebApplicationException.class)
|
||||||
public void testValidationTestDomainWithInvalidPortForWebhook() {
|
public void testValidationTestDomainWithInvalidPortForWebhook() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://test.test:4522AA/mywebhook", "60");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://test.test:4522AA/mywebhook", "60");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = WebApplicationException.class)
|
@Test(expectedExceptions = WebApplicationException.class)
|
||||||
public void testValidationTestDomainWithInvalidMultiplePortsForWebhook() {
|
public void testValidationTestDomainWithInvalidMultiplePortsForWebhook() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://test.test:4522:33/mywebhook", "60");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://test.test:4522:33/mywebhook", "60");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = WebApplicationException.class)
|
@Test(expectedExceptions = WebApplicationException.class)
|
||||||
public void testValidationInvalidDomainForWebhook() {
|
public void testValidationInvalidDomainForWebhook() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://test.fred", "60");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://test.fred", "60");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = WebApplicationException.class)
|
@Test(expectedExceptions = WebApplicationException.class)
|
||||||
public void testValidationExceptionForWebhook() throws Exception {
|
public void testValidationExceptionForWebhook() throws Exception {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "ftp://localhost", "0");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "ftp://localhost", "0");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testValidationForPagerduty() {
|
public void testValidationForPagerduty() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyPagerduty", NotificationMethodType.PAGERDUTY, "nzH2LVRdMzun11HNC2oD", "0");
|
new CreateNotificationMethodCommand("MyPagerduty", NOTIFICATION_METHOD_PAGERDUTY, "nzH2LVRdMzun11HNC2oD", "0");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = WebApplicationException.class)
|
@Test(expectedExceptions = WebApplicationException.class)
|
||||||
public void testValidationExceptionForNonZeroPeriodForPagerDuty() {
|
public void testValidationExceptionForNonZeroPeriodForPagerDuty() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyPagerduty", NotificationMethodType.PAGERDUTY, "nzH2LVRdMzun11HNC2oD", "60");
|
new CreateNotificationMethodCommand("MyPagerduty", NOTIFICATION_METHOD_PAGERDUTY, "nzH2LVRdMzun11HNC2oD", "60");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods );
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testValidationForMaxNameAddress() {
|
public void testValidationForMaxNameAddress() {
|
||||||
@ -184,7 +188,7 @@ public class CreateNotificationMethodTest extends AbstractModelTest {
|
|||||||
String address = "http://" + StringUtils.repeat("A", 502) + ".io";
|
String address = "http://" + StringUtils.repeat("A", 502) + ".io";
|
||||||
assertEquals(address.length(), 512);
|
assertEquals(address.length(), 512);
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand(name, NotificationMethodType.WEBHOOK, address, "0");
|
new CreateNotificationMethodCommand(name, NOTIFICATION_METHOD_WEBHOOK, address, "0");
|
||||||
Set<ConstraintViolation<CreateNotificationMethodCommand>> constraintViolations =
|
Set<ConstraintViolation<CreateNotificationMethodCommand>> constraintViolations =
|
||||||
validator.validate(newNotificationMethod);
|
validator.validate(newNotificationMethod);
|
||||||
|
|
||||||
@ -195,7 +199,7 @@ public class CreateNotificationMethodTest extends AbstractModelTest {
|
|||||||
String name = StringUtils.repeat("A", 251);
|
String name = StringUtils.repeat("A", 251);
|
||||||
assertEquals(name.length(), 251);
|
assertEquals(name.length(), 251);
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand(name, NotificationMethodType.WEBHOOK, "http://somedomain.com", "0");
|
new CreateNotificationMethodCommand(name, NOTIFICATION_METHOD_WEBHOOK, "http://somedomain.com", "0");
|
||||||
Set<ConstraintViolation<CreateNotificationMethodCommand>> constraintViolations =
|
Set<ConstraintViolation<CreateNotificationMethodCommand>> constraintViolations =
|
||||||
validator.validate(newNotificationMethod);
|
validator.validate(newNotificationMethod);
|
||||||
|
|
||||||
@ -208,7 +212,7 @@ public class CreateNotificationMethodTest extends AbstractModelTest {
|
|||||||
String address = "http://" + StringUtils.repeat("A", 503) + ".io";
|
String address = "http://" + StringUtils.repeat("A", 503) + ".io";
|
||||||
assertEquals(address.length(), 513);
|
assertEquals(address.length(), 513);
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, address, "0");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, address, "0");
|
||||||
Set<ConstraintViolation<CreateNotificationMethodCommand>> constraintViolations =
|
Set<ConstraintViolation<CreateNotificationMethodCommand>> constraintViolations =
|
||||||
validator.validate(newNotificationMethod);
|
validator.validate(newNotificationMethod);
|
||||||
|
|
||||||
@ -220,14 +224,14 @@ public class CreateNotificationMethodTest extends AbstractModelTest {
|
|||||||
@Test(expectedExceptions = WebApplicationException.class)
|
@Test(expectedExceptions = WebApplicationException.class)
|
||||||
public void testValidationExceptionForNonIntPeriod() {
|
public void testValidationExceptionForNonIntPeriod() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "name@domain.com", "interval");
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "name@domain.com", "interval");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = WebApplicationException.class)
|
@Test(expectedExceptions = WebApplicationException.class)
|
||||||
public void testValidationExceptionForInvalidPeriod() {
|
public void testValidationExceptionForInvalidPeriod() {
|
||||||
CreateNotificationMethodCommand newNotificationMethod =
|
CreateNotificationMethodCommand newNotificationMethod =
|
||||||
new CreateNotificationMethodCommand("MyWebhook", NotificationMethodType.WEBHOOK, "http://somedomain.com", "10");
|
new CreateNotificationMethodCommand("MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://somedomain.com", "10");
|
||||||
newNotificationMethod.validate(validPeriods);
|
newNotificationMethod.validate(validPeriods);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -23,7 +23,7 @@ import org.testng.annotations.Test;
|
|||||||
|
|
||||||
import monasca.api.domain.model.common.Link;
|
import monasca.api.domain.model.common.Link;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public class NotificationMethodTest extends AbstractModelTest {
|
public class NotificationMethodTest extends AbstractModelTest {
|
||||||
@ -31,7 +31,7 @@ public class NotificationMethodTest extends AbstractModelTest {
|
|||||||
|
|
||||||
public NotificationMethodTest() {
|
public NotificationMethodTest() {
|
||||||
notificationMethod =
|
notificationMethod =
|
||||||
new NotificationMethod("123", "MyEmail", NotificationMethodType.EMAIL, "a@b", 0);
|
new NotificationMethod("123", "MyEmail", "EMAIL", "a@b", 0);
|
||||||
notificationMethod.setLinks(Arrays.asList(new Link("self",
|
notificationMethod.setLinks(Arrays.asList(new Link("self",
|
||||||
"https://cloudsvc.example.com/v1.0")));
|
"https://cloudsvc.example.com/v1.0")));
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2015 FUJITSU LIMITED
|
* Copyright 2015 FUJITSU LIMITED
|
||||||
|
* (C) Copyright 2014,2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -29,6 +30,7 @@ import monasca.common.hibernate.db.MetricDefinitionDb;
|
|||||||
import monasca.common.hibernate.db.MetricDefinitionDimensionsDb;
|
import monasca.common.hibernate.db.MetricDefinitionDimensionsDb;
|
||||||
import monasca.common.hibernate.db.MetricDimensionDb;
|
import monasca.common.hibernate.db.MetricDimensionDb;
|
||||||
import monasca.common.hibernate.db.NotificationMethodDb;
|
import monasca.common.hibernate.db.NotificationMethodDb;
|
||||||
|
import monasca.common.hibernate.db.NotificationMethodTypesDb;
|
||||||
import monasca.common.hibernate.db.SubAlarmDb;
|
import monasca.common.hibernate.db.SubAlarmDb;
|
||||||
import monasca.common.hibernate.db.SubAlarmDefinitionDb;
|
import monasca.common.hibernate.db.SubAlarmDefinitionDb;
|
||||||
import monasca.common.hibernate.db.SubAlarmDefinitionDimensionDb;
|
import monasca.common.hibernate.db.SubAlarmDefinitionDimensionDb;
|
||||||
@ -52,6 +54,7 @@ class HibernateUtil {
|
|||||||
configuration.addAnnotatedClass(SubAlarmDb.class);
|
configuration.addAnnotatedClass(SubAlarmDb.class);
|
||||||
configuration.addAnnotatedClass(AlarmActionDb.class);
|
configuration.addAnnotatedClass(AlarmActionDb.class);
|
||||||
configuration.addAnnotatedClass(NotificationMethodDb.class);
|
configuration.addAnnotatedClass(NotificationMethodDb.class);
|
||||||
|
configuration.addAnnotatedClass(NotificationMethodTypesDb.class);
|
||||||
|
|
||||||
configuration.setProperties(getHikariH2Properties());
|
configuration.setProperties(getHikariH2Properties());
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2015 FUJITSU LIMITED
|
* Copyright 2015 FUJITSU LIMITED
|
||||||
* (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -26,13 +26,6 @@ import java.util.List;
|
|||||||
|
|
||||||
import javax.ws.rs.WebApplicationException;
|
import javax.ws.rs.WebApplicationException;
|
||||||
|
|
||||||
import monasca.api.domain.exception.EntityExistsException;
|
|
||||||
import monasca.api.domain.exception.EntityNotFoundException;
|
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
import monasca.common.hibernate.db.NotificationMethodDb;
|
|
||||||
import monasca.common.model.alarm.AlarmNotificationMethodType;
|
|
||||||
import org.hibernate.Session;
|
import org.hibernate.Session;
|
||||||
import org.hibernate.SessionFactory;
|
import org.hibernate.SessionFactory;
|
||||||
import org.hibernate.Transaction;
|
import org.hibernate.Transaction;
|
||||||
@ -41,12 +34,22 @@ import org.testng.annotations.AfterMethod;
|
|||||||
import org.testng.annotations.BeforeMethod;
|
import org.testng.annotations.BeforeMethod;
|
||||||
import org.testng.annotations.Test;
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import monasca.api.domain.exception.EntityExistsException;
|
||||||
|
import monasca.api.domain.exception.EntityNotFoundException;
|
||||||
|
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
||||||
|
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
||||||
|
import monasca.common.hibernate.db.NotificationMethodDb;
|
||||||
|
import monasca.common.hibernate.db.NotificationMethodTypesDb;
|
||||||
|
import monasca.common.model.alarm.AlarmNotificationMethodType;
|
||||||
|
|
||||||
@Test(groups = "orm")
|
@Test(groups = "orm")
|
||||||
public class NotificationMethodSqlRepositoryImplTest {
|
public class NotificationMethodSqlRepositoryImplTest {
|
||||||
NotificationMethodRepo repo = null;
|
NotificationMethodRepo repo = null;
|
||||||
private SessionFactory sessionFactory;
|
private SessionFactory sessionFactory;
|
||||||
private Transaction tx;
|
private Transaction tx;
|
||||||
|
|
||||||
|
private static final String NOTIFICATION_METHOD_EMAIL = "EMAIL";
|
||||||
|
|
||||||
@BeforeMethod
|
@BeforeMethod
|
||||||
protected void beforeMethod() throws Exception {
|
protected void beforeMethod() throws Exception {
|
||||||
this.sessionFactory = HibernateUtil.getSessionFactory();
|
this.sessionFactory = HibernateUtil.getSessionFactory();
|
||||||
@ -80,6 +83,18 @@ public class NotificationMethodSqlRepositoryImplTest {
|
|||||||
session.save(notificationMethodDb1);
|
session.save(notificationMethodDb1);
|
||||||
session.save(notificationMethodDb2);
|
session.save(notificationMethodDb2);
|
||||||
|
|
||||||
|
NotificationMethodTypesDb notificationMethodTypeDb1 =
|
||||||
|
new NotificationMethodTypesDb("EMAIL");
|
||||||
|
NotificationMethodTypesDb notificationMethodTypeDb2 =
|
||||||
|
new NotificationMethodTypesDb("WEBHOOK");
|
||||||
|
NotificationMethodTypesDb notificationMethodTypeDb3 =
|
||||||
|
new NotificationMethodTypesDb("PAGERDUTY");
|
||||||
|
|
||||||
|
session.save(notificationMethodTypeDb1);
|
||||||
|
session.save(notificationMethodTypeDb2);
|
||||||
|
session.save(notificationMethodTypeDb3);
|
||||||
|
|
||||||
|
|
||||||
session.getTransaction().commit();
|
session.getTransaction().commit();
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
@ -91,7 +106,7 @@ public class NotificationMethodSqlRepositoryImplTest {
|
|||||||
|
|
||||||
@Test(groups = "orm")
|
@Test(groups = "orm")
|
||||||
public void shouldCreate() {
|
public void shouldCreate() {
|
||||||
NotificationMethod nmA = repo.create("555", "MyEmail", NotificationMethodType.EMAIL, "a@b", 0);
|
NotificationMethod nmA = repo.create("555", "MyEmail", NOTIFICATION_METHOD_EMAIL, "a@b", 0);
|
||||||
NotificationMethod nmB = repo.findById("555", nmA.getId());
|
NotificationMethod nmB = repo.findById("555", nmA.getId());
|
||||||
|
|
||||||
assertEquals(nmA, nmB);
|
assertEquals(nmA, nmB);
|
||||||
@ -108,25 +123,25 @@ public class NotificationMethodSqlRepositoryImplTest {
|
|||||||
public void shouldFind() {
|
public void shouldFind() {
|
||||||
List<NotificationMethod> nms1 = repo.find("444", null, null, 1);
|
List<NotificationMethod> nms1 = repo.find("444", null, null, 1);
|
||||||
|
|
||||||
assertEquals(nms1, Arrays.asList(new NotificationMethod("123", "MyEmail", NotificationMethodType.EMAIL, "a@b", 0), new NotificationMethod("124",
|
assertEquals(nms1, Arrays.asList(new NotificationMethod("123", "MyEmail", NOTIFICATION_METHOD_EMAIL, "a@b", 0), new NotificationMethod("124",
|
||||||
"OtherEmail", NotificationMethodType.EMAIL, "a@b", 0)));
|
"OtherEmail", NOTIFICATION_METHOD_EMAIL, "a@b", 0)));
|
||||||
|
|
||||||
List<NotificationMethod> nms2 = repo.find("444", null, "123", 1);
|
List<NotificationMethod> nms2 = repo.find("444", null, "123", 1);
|
||||||
|
|
||||||
assertEquals(nms2, Collections.singletonList(new NotificationMethod("124", "OtherEmail", NotificationMethodType.EMAIL, "a@b", 0)));
|
assertEquals(nms2, Collections.singletonList(new NotificationMethod("124", "OtherEmail", NOTIFICATION_METHOD_EMAIL, "a@b", 0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(groups = "orm")
|
@Test(groups = "orm")
|
||||||
public void shouldUpdate() {
|
public void shouldUpdate() {
|
||||||
repo.update("444", "123", "Foo", NotificationMethodType.EMAIL, "abc", 0);
|
repo.update("444", "123", "Foo", NOTIFICATION_METHOD_EMAIL, "abc", 0);
|
||||||
NotificationMethod nm = repo.findById("444", "123");
|
NotificationMethod nm = repo.findById("444", "123");
|
||||||
|
|
||||||
assertEquals(nm, new NotificationMethod("123", "Foo", NotificationMethodType.EMAIL, "abc", 0));
|
assertEquals(nm, new NotificationMethod("123", "Foo", NOTIFICATION_METHOD_EMAIL, "abc", 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(groups = "orm")
|
@Test(groups = "orm")
|
||||||
public void shouldUpdateReturnValue() {
|
public void shouldUpdateReturnValue() {
|
||||||
NotificationMethod nm = repo.update("444", "123", "Foo", NotificationMethodType.EMAIL, "abc", 0);
|
NotificationMethod nm = repo.update("444", "123", "Foo", NOTIFICATION_METHOD_EMAIL, "abc", 0);
|
||||||
|
|
||||||
NotificationMethod foundNotificationMethod = repo.findById("444", "123");
|
NotificationMethod foundNotificationMethod = repo.findById("444", "123");
|
||||||
assertEquals(nm, foundNotificationMethod);
|
assertEquals(nm, foundNotificationMethod);
|
||||||
@ -145,16 +160,16 @@ public class NotificationMethodSqlRepositoryImplTest {
|
|||||||
|
|
||||||
@Test(groups = "orm")
|
@Test(groups = "orm")
|
||||||
public void shouldUpdateDuplicateWithSameValues() {
|
public void shouldUpdateDuplicateWithSameValues() {
|
||||||
repo.update("444", "123", "Foo", NotificationMethodType.EMAIL, "abc", 0);
|
repo.update("444", "123", "Foo", NOTIFICATION_METHOD_EMAIL, "abc", 0);
|
||||||
NotificationMethod nm = repo.findById("444", "123");
|
NotificationMethod nm = repo.findById("444", "123");
|
||||||
|
|
||||||
assertEquals(nm, new NotificationMethod("123", "Foo", NotificationMethodType.EMAIL, "abc", 0));
|
assertEquals(nm, new NotificationMethod("123", "Foo", NOTIFICATION_METHOD_EMAIL, "abc", 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(groups = "orm", expectedExceptions = EntityExistsException.class)
|
@Test(groups = "orm", expectedExceptions = EntityExistsException.class)
|
||||||
public void shouldNotUpdateDuplicateWithSameName() {
|
public void shouldNotUpdateDuplicateWithSameName() {
|
||||||
|
|
||||||
repo.update("444", "124", "MyEmail", NotificationMethodType.EMAIL, "abc", 0);
|
repo.update("444", "124", "MyEmail", NOTIFICATION_METHOD_EMAIL, "abc", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(groups = "orm", expectedExceptions = WebApplicationException.class)
|
@Test(groups = "orm", expectedExceptions = WebApplicationException.class)
|
||||||
|
@ -0,0 +1,88 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2015 FUJITSU LIMITED
|
||||||
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package monasca.api.infrastructure.persistence.hibernate;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.hibernate.SQLQuery;
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.SessionFactory;
|
||||||
|
import org.hibernate.Transaction;
|
||||||
|
import org.testng.annotations.AfterMethod;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
@Test(groups = "orm")
|
||||||
|
public class NotificationMethodTypesSqlRepositoryImplTest {
|
||||||
|
NotificationMethodTypesSqlRepoImpl repo = null;
|
||||||
|
private SessionFactory sessionFactory;
|
||||||
|
private Transaction tx;
|
||||||
|
|
||||||
|
private final static List<String> DEFAULT_NOTIFICATION_METHODS = Arrays.asList("Email", "PagerDuty", "WebHook");
|
||||||
|
|
||||||
|
@BeforeMethod
|
||||||
|
protected void beforeMethod() throws Exception {
|
||||||
|
this.sessionFactory = HibernateUtil.getSessionFactory();
|
||||||
|
this.repo = new NotificationMethodTypesSqlRepoImpl(sessionFactory);
|
||||||
|
|
||||||
|
this.prepareData(this.sessionFactory);
|
||||||
|
|
||||||
|
this.tx = this.sessionFactory.openSession().beginTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterMethod
|
||||||
|
protected void afterMethod() throws Exception {
|
||||||
|
this.tx.rollback();
|
||||||
|
|
||||||
|
this.sessionFactory.close();
|
||||||
|
this.sessionFactory = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void prepareData(final SessionFactory sessionFactory) {
|
||||||
|
Session session = null;
|
||||||
|
try {
|
||||||
|
session = sessionFactory.openSession();
|
||||||
|
|
||||||
|
session.beginTransaction();
|
||||||
|
|
||||||
|
for (String method: DEFAULT_NOTIFICATION_METHODS){
|
||||||
|
SQLQuery insertQuery = session.createSQLQuery("INSERT INTO NOTIFICATION_METHOD_TYPE (name) VALUES(?)");
|
||||||
|
insertQuery.setParameter(0, method);
|
||||||
|
insertQuery.executeUpdate();
|
||||||
|
}
|
||||||
|
|
||||||
|
session.getTransaction().commit();
|
||||||
|
|
||||||
|
} finally {
|
||||||
|
if (session != null) {
|
||||||
|
session.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@Test(groups = "orm")
|
||||||
|
public void shouldList() {
|
||||||
|
List<String> result = repo.listNotificationMethodTypes();
|
||||||
|
|
||||||
|
assertEquals(DEFAULT_NOTIFICATION_METHODS, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -26,7 +26,6 @@ import java.util.List;
|
|||||||
import monasca.api.domain.exception.EntityExistsException;
|
import monasca.api.domain.exception.EntityExistsException;
|
||||||
import monasca.api.domain.exception.EntityNotFoundException;
|
import monasca.api.domain.exception.EntityNotFoundException;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
|
|
||||||
import org.skife.jdbi.v2.DBI;
|
import org.skife.jdbi.v2.DBI;
|
||||||
import org.skife.jdbi.v2.Handle;
|
import org.skife.jdbi.v2.Handle;
|
||||||
@ -44,12 +43,24 @@ public class NotificationMethodMySqlRepositoryImplTest {
|
|||||||
private Handle handle;
|
private Handle handle;
|
||||||
private NotificationMethodMySqlRepoImpl repo;
|
private NotificationMethodMySqlRepoImpl repo;
|
||||||
|
|
||||||
|
private static final String NOTIFICATION_METHOD_WEBHOOK = "WEBHOOK";
|
||||||
|
private static final String NOTIFICATION_METHOD_EMAIL = "EMAIL";
|
||||||
|
private static final String NOTIFICATION_METHOD_PAGERDUTY = "PAGERDUTY";
|
||||||
|
|
||||||
@BeforeClass
|
@BeforeClass
|
||||||
protected void beforeClass() throws Exception {
|
protected void beforeClass() throws Exception {
|
||||||
db = new DBI("jdbc:h2:mem:test;MODE=MySQL");
|
db = new DBI("jdbc:h2:mem:test;MODE=MySQL");
|
||||||
handle = db.open();
|
handle = db.open();
|
||||||
handle.execute(Resources.toString(getClass().getResource("notification_method.sql"),
|
handle.execute(Resources.toString(getClass().getResource("notification_method.sql"),
|
||||||
Charset.defaultCharset()));
|
Charset.defaultCharset()));
|
||||||
|
handle.execute(Resources.toString(getClass().getResource("notification_method_type.sql"),
|
||||||
|
Charset.defaultCharset()));
|
||||||
|
handle
|
||||||
|
.execute("insert into notification_method_type ( name) values ('EMAIL')");
|
||||||
|
handle
|
||||||
|
.execute("insert into notification_method_type ( name) values ('PAGERDUTY')");
|
||||||
|
handle
|
||||||
|
.execute("insert into notification_method_type ( name) values ('WEBHOOK')");
|
||||||
repo = new NotificationMethodMySqlRepoImpl(db, new PersistUtils());
|
repo = new NotificationMethodMySqlRepoImpl(db, new PersistUtils());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,14 +79,14 @@ public class NotificationMethodMySqlRepositoryImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void shouldCreateEmail() {
|
public void shouldCreateEmail() {
|
||||||
NotificationMethod nmA = repo.create("555", "MyEmail", NotificationMethodType.EMAIL, "a@b", 0);
|
NotificationMethod nmA = repo.create("555", "MyEmail", NOTIFICATION_METHOD_EMAIL, "a@b", 0);
|
||||||
NotificationMethod nmB = repo.findById("555", nmA.getId());
|
NotificationMethod nmB = repo.findById("555", nmA.getId());
|
||||||
|
|
||||||
assertEquals(nmA, nmB);
|
assertEquals(nmA, nmB);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shouldCreateWebhookNonZeroPeriod() {
|
public void shouldCreateWebhookNonZeroPeriod() {
|
||||||
NotificationMethod nmA = repo.create("555", "MyWebhook", NotificationMethodType.WEBHOOK, "http://localhost:33", 60);
|
NotificationMethod nmA = repo.create("555", "MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://localhost:33", 60);
|
||||||
NotificationMethod nmB = repo.findById("555", nmA.getId());
|
NotificationMethod nmB = repo.findById("555", nmA.getId());
|
||||||
|
|
||||||
assertEquals(nmA, nmB);
|
assertEquals(nmA, nmB);
|
||||||
@ -91,7 +102,7 @@ public class NotificationMethodMySqlRepositoryImplTest {
|
|||||||
NotificationMethod nm = repo.findById("444", "123");
|
NotificationMethod nm = repo.findById("444", "123");
|
||||||
|
|
||||||
assertEquals(nm.getId(), "123");
|
assertEquals(nm.getId(), "123");
|
||||||
assertEquals(nm.getType(), NotificationMethodType.EMAIL);
|
assertEquals(nm.getType(), NOTIFICATION_METHOD_EMAIL);
|
||||||
assertEquals(nm.getAddress(), "a@b");
|
assertEquals(nm.getAddress(), "a@b");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -99,20 +110,20 @@ public class NotificationMethodMySqlRepositoryImplTest {
|
|||||||
List<NotificationMethod> nms = repo.find("444", null, null, 1);
|
List<NotificationMethod> nms = repo.find("444", null, null, 1);
|
||||||
|
|
||||||
assertEquals(nms, Arrays.asList(new NotificationMethod("123", "MyEmail",
|
assertEquals(nms, Arrays.asList(new NotificationMethod("123", "MyEmail",
|
||||||
NotificationMethodType.EMAIL, "a@b", 0),new NotificationMethod("124", "OtherEmail",
|
NOTIFICATION_METHOD_EMAIL, "a@b", 0),new NotificationMethod("124", "OtherEmail",
|
||||||
NotificationMethodType.EMAIL, "a@b", 0)));
|
NOTIFICATION_METHOD_EMAIL, "a@b", 0)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shouldUpdate() {
|
public void shouldUpdate() {
|
||||||
repo.update("444", "123", "Foo", NotificationMethodType.EMAIL, "abc", 0);
|
repo.update("444", "123", "Foo", NOTIFICATION_METHOD_EMAIL, "abc", 0);
|
||||||
NotificationMethod nm = repo.findById("444", "123");
|
NotificationMethod nm = repo.findById("444", "123");
|
||||||
|
|
||||||
assertEquals(nm, new NotificationMethod("123", "Foo", NotificationMethodType.EMAIL, "abc", 0));
|
assertEquals(nm, new NotificationMethod("123", "Foo", NOTIFICATION_METHOD_EMAIL, "abc", 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shouldUpdateWebhookWithNonZeroPeriod() {
|
public void shouldUpdateWebhookWithNonZeroPeriod() {
|
||||||
NotificationMethod nmOriginal = repo.create("555", "MyWebhook", NotificationMethodType.WEBHOOK, "http://localhost:33", 0);
|
NotificationMethod nmOriginal = repo.create("555", "MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://localhost:33", 0);
|
||||||
repo.update("555", nmOriginal.getId(), "MyWebhook", NotificationMethodType.WEBHOOK, "http://localhost:33", 60);
|
repo.update("555", nmOriginal.getId(), "MyWebhook", NOTIFICATION_METHOD_WEBHOOK, "http://localhost:33", 60);
|
||||||
NotificationMethod nmUpdated = repo.findById("555", nmOriginal.getId());
|
NotificationMethod nmUpdated = repo.findById("555", nmOriginal.getId());
|
||||||
|
|
||||||
assertEquals(nmUpdated.getPeriod(), 60);
|
assertEquals(nmUpdated.getPeriod(), 60);
|
||||||
@ -129,16 +140,16 @@ public class NotificationMethodMySqlRepositoryImplTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void shouldUpdateDuplicateWithSameValues() {
|
public void shouldUpdateDuplicateWithSameValues() {
|
||||||
repo.update("444", "123", "Foo", NotificationMethodType.EMAIL, "abc", 0);
|
repo.update("444", "123", "Foo", NOTIFICATION_METHOD_EMAIL, "abc", 0);
|
||||||
NotificationMethod nm = repo.findById("444", "123");
|
NotificationMethod nm = repo.findById("444", "123");
|
||||||
|
|
||||||
assertEquals(nm, new NotificationMethod("123", "Foo", NotificationMethodType.EMAIL, "abc", 0));
|
assertEquals(nm, new NotificationMethod("123", "Foo", NOTIFICATION_METHOD_EMAIL, "abc", 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expectedExceptions = EntityExistsException.class)
|
@Test(expectedExceptions = EntityExistsException.class)
|
||||||
public void shouldNotUpdateDuplicateWithSameName() {
|
public void shouldNotUpdateDuplicateWithSameName() {
|
||||||
|
|
||||||
repo.update("444", "124", "MyEmail", NotificationMethodType.EMAIL, "abc", 0);
|
repo.update("444", "124", "MyEmail", NOTIFICATION_METHOD_EMAIL, "abc", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,78 @@
|
|||||||
|
/*
|
||||||
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development 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
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package monasca.api.infrastructure.persistence.mysql;
|
||||||
|
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.nio.charset.Charset;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.skife.jdbi.v2.DBI;
|
||||||
|
import org.skife.jdbi.v2.Handle;
|
||||||
|
import org.testng.annotations.AfterClass;
|
||||||
|
import org.testng.annotations.BeforeClass;
|
||||||
|
import org.testng.annotations.BeforeMethod;
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import com.google.common.io.Resources;
|
||||||
|
|
||||||
|
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public class NotificationMethodTypeMySqlRepositoryImplTest {
|
||||||
|
private DBI db;
|
||||||
|
private Handle handle;
|
||||||
|
private NotificationMethodTypesMySqlRepoImpl repo;
|
||||||
|
|
||||||
|
private final static List<String> DEFAULT_NOTIFICATION_METHODS = Arrays.asList("Email", "PagerDuty", "WebHook");
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
protected void beforeClass() throws Exception {
|
||||||
|
db = new DBI("jdbc:h2:mem:test;MODE=MySQL");
|
||||||
|
handle = db.open();
|
||||||
|
handle.execute(Resources.toString(getClass().getResource("notification_method_type.sql"),
|
||||||
|
Charset.defaultCharset()));
|
||||||
|
repo = new NotificationMethodTypesMySqlRepoImpl(db, new PersistUtils());
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterClass
|
||||||
|
protected void afterClass() {
|
||||||
|
handle.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeMethod
|
||||||
|
protected void beforeMethod() {
|
||||||
|
handle.execute("truncate table notification_method_type");
|
||||||
|
createNotificationMethodTypes();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void createNotificationMethodTypes() {
|
||||||
|
try (Handle h = db.open()) {
|
||||||
|
h.begin();
|
||||||
|
for (String methodType : DEFAULT_NOTIFICATION_METHODS){
|
||||||
|
h.insert("insert into notification_method_type (name) values (?)", methodType);
|
||||||
|
}
|
||||||
|
h.commit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shouldListNotificationMethodTypes() {
|
||||||
|
List<String> notification_method_types = repo.listNotificationMethodTypes();
|
||||||
|
assertEquals(notification_method_types, DEFAULT_NOTIFICATION_METHODS);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -37,7 +37,6 @@ import monasca.api.app.command.CreateNotificationMethodCommand;
|
|||||||
import monasca.api.domain.exception.EntityNotFoundException;
|
import monasca.api.domain.exception.EntityNotFoundException;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
import monasca.api.infrastructure.persistence.PersistUtils;
|
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||||
import monasca.api.infrastructure.persistence.mysql.NotificationMethodMySqlRepoImpl;
|
import monasca.api.infrastructure.persistence.mysql.NotificationMethodMySqlRepoImpl;
|
||||||
import monasca.api.resource.AbstractMonApiResourceTest;
|
import monasca.api.resource.AbstractMonApiResourceTest;
|
||||||
@ -77,7 +76,7 @@ public class NotificationMethodIntegrationTest extends AbstractMonApiResourceTes
|
|||||||
|
|
||||||
// Fixtures
|
// Fixtures
|
||||||
notificationMethod =
|
notificationMethod =
|
||||||
new NotificationMethod("123", "Joe's Email", NotificationMethodType.EMAIL, "a@b", 0);
|
new NotificationMethod("123", "Joe's Email", "EMAIL", "a@b", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shouldCreate() throws Exception {
|
public void shouldCreate() throws Exception {
|
||||||
@ -107,7 +106,7 @@ public class NotificationMethodIntegrationTest extends AbstractMonApiResourceTes
|
|||||||
.header("X-Tenant-Id", TENANT_ID)
|
.header("X-Tenant-Id", TENANT_ID)
|
||||||
.type(MediaType.APPLICATION_JSON)
|
.type(MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "a@b", "0"));
|
new CreateNotificationMethodCommand("MyEmail", "EMAIL", "a@b", "0"));
|
||||||
|
|
||||||
assertEquals(response.getStatus(), 409);
|
assertEquals(response.getStatus(), 409);
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
* (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
|
* 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
|
* in compliance with the License. You may obtain a copy of the License at
|
||||||
@ -23,7 +23,6 @@ import monasca.api.domain.exception.EntityNotFoundException;
|
|||||||
import monasca.api.domain.model.common.Paged;
|
import monasca.api.domain.model.common.Paged;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
import monasca.api.domain.model.notificationmethod.NotificationMethod;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
import monasca.api.domain.model.notificationmethod.NotificationMethodRepo;
|
||||||
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
|
||||||
import monasca.api.infrastructure.persistence.PersistUtils;
|
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||||
import monasca.api.resource.exception.ErrorMessages;
|
import monasca.api.resource.exception.ErrorMessages;
|
||||||
|
|
||||||
@ -48,22 +47,26 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
private NotificationMethodRepo repo;
|
private NotificationMethodRepo repo;
|
||||||
private ApiConfig config;
|
private ApiConfig config;
|
||||||
|
|
||||||
|
private static final String NOTIFICATION_METHOD_WEBHOOK = "WEBHOOK";
|
||||||
|
private static final String NOTIFICATION_METHOD_EMAIL = "EMAIL";
|
||||||
|
private static final String NOTIFICATION_METHOD_PAGERDUTY = "PAGERDUTY";
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void setupResources() throws Exception {
|
protected void setupResources() throws Exception {
|
||||||
super.setupResources();
|
super.setupResources();
|
||||||
notificationMethod =
|
notificationMethod =
|
||||||
new NotificationMethod("123", "Joe's Email", NotificationMethodType.EMAIL, "a@b", 0);
|
new NotificationMethod("123", "Joe's Email", NOTIFICATION_METHOD_EMAIL, "a@b", 0);
|
||||||
notificationMethodWebhook =
|
notificationMethodWebhook =
|
||||||
new NotificationMethod("1234", "MyWh", NotificationMethodType.WEBHOOK, "http://localhost", 60);
|
new NotificationMethod("1234", "MyWh", NOTIFICATION_METHOD_WEBHOOK, "http://localhost", 60);
|
||||||
notificationMethodPagerduty =
|
notificationMethodPagerduty =
|
||||||
new NotificationMethod("12345", "MyPd", NotificationMethodType.PAGERDUTY, "nzH2LVRdMzun11HNC2oD", 0);
|
new NotificationMethod("12345", "MyPd", NOTIFICATION_METHOD_PAGERDUTY, "nzH2LVRdMzun11HNC2oD", 0);
|
||||||
|
|
||||||
repo = mock(NotificationMethodRepo.class);
|
repo = mock(NotificationMethodRepo.class);
|
||||||
when(repo.create(eq("abc"), eq("MyEmail"), eq(NotificationMethodType.EMAIL), anyString(), eq(0)))
|
when(repo.create(eq("abc"), eq("MyEmail"), eq(NOTIFICATION_METHOD_EMAIL), anyString(), eq(0)))
|
||||||
.thenReturn(notificationMethod);
|
.thenReturn(notificationMethod);
|
||||||
when(repo.create(eq("abc"), eq("MyWh"), eq(NotificationMethodType.WEBHOOK), anyString(), anyInt()))
|
when(repo.create(eq("abc"), eq("MyWh"), eq(NOTIFICATION_METHOD_WEBHOOK), anyString(), anyInt()))
|
||||||
.thenReturn(notificationMethodWebhook);
|
.thenReturn(notificationMethodWebhook);
|
||||||
when(repo.create(eq("abc"), eq("MyPd"), eq(NotificationMethodType.PAGERDUTY), anyString(), eq(0)))
|
when(repo.create(eq("abc"), eq("MyPd"), eq(NOTIFICATION_METHOD_PAGERDUTY), anyString(), eq(0)))
|
||||||
.thenReturn(notificationMethodPagerduty);
|
.thenReturn(notificationMethodPagerduty);
|
||||||
when(repo.findById(eq("abc"), eq("123"))).thenReturn(notificationMethod);
|
when(repo.findById(eq("abc"), eq("123"))).thenReturn(notificationMethod);
|
||||||
when(repo.find(eq("abc"), (List<String>) anyList(), anyString(), anyInt()))
|
when(repo.find(eq("abc"), (List<String>) anyList(), anyString(), anyInt()))
|
||||||
@ -81,19 +84,19 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "a@a.com", "0"));
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "a@a.com", "0"));
|
||||||
|
|
||||||
NotificationMethod newNotificationMethod = response.getEntity(NotificationMethod.class);
|
NotificationMethod newNotificationMethod = response.getEntity(NotificationMethod.class);
|
||||||
String location = response.getHeaders().get("Location").get(0);
|
String location = response.getHeaders().get("Location").get(0);
|
||||||
assertEquals(response.getStatus(), 201);
|
assertEquals(response.getStatus(), 201);
|
||||||
assertEquals(location, "/v2.0/notification-methods/" + newNotificationMethod.getId());
|
assertEquals(location, "/v2.0/notification-methods/" + newNotificationMethod.getId());
|
||||||
assertEquals(newNotificationMethod, notificationMethod);
|
assertEquals(newNotificationMethod, notificationMethod);
|
||||||
verify(repo).create(eq("abc"), eq("MyEmail"), eq(NotificationMethodType.EMAIL), anyString(), eq(0));
|
verify(repo).create(eq("abc"), eq("MyEmail"), eq(NOTIFICATION_METHOD_EMAIL), anyString(), eq(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shouldUpdate() {
|
public void shouldUpdate() {
|
||||||
when(
|
when(
|
||||||
repo.update(eq("abc"), anyString(), anyString(), any(NotificationMethodType.class),
|
repo.update(eq("abc"), anyString(), anyString(), any(String.class),
|
||||||
anyString(), eq(0))).thenReturn(notificationMethod);
|
anyString(), eq(0))).thenReturn(notificationMethod);
|
||||||
ClientResponse response =
|
ClientResponse response =
|
||||||
client()
|
client()
|
||||||
@ -101,10 +104,10 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.put(ClientResponse.class,
|
.put(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("Foo", NotificationMethodType.EMAIL, "a@a.com", "0"));
|
new CreateNotificationMethodCommand("Foo", NOTIFICATION_METHOD_EMAIL, "a@a.com", "0"));
|
||||||
|
|
||||||
assertEquals(response.getStatus(), 200);
|
assertEquals(response.getStatus(), 200);
|
||||||
verify(repo).update(eq("abc"), eq("123"), eq("Foo"), eq(NotificationMethodType.EMAIL),
|
verify(repo).update(eq("abc"), eq("123"), eq("Foo"), eq(NOTIFICATION_METHOD_EMAIL),
|
||||||
eq("a@a.com"), eq(0));
|
eq("a@a.com"), eq(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,7 +132,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "a@", "0"));
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "a@", "0"));
|
||||||
|
|
||||||
ErrorMessages.assertThat(response.getEntity(String.class)).matches("unprocessable_entity", 422,
|
ErrorMessages.assertThat(response.getEntity(String.class)).matches("unprocessable_entity", 422,
|
||||||
"Address a@ is not of correct format");
|
"Address a@ is not of correct format");
|
||||||
@ -142,7 +145,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "a@f ,", "0"));
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "a@f ,", "0"));
|
||||||
|
|
||||||
ErrorMessages.assertThat(response.getEntity(String.class)).matches("unprocessable_entity", 422,
|
ErrorMessages.assertThat(response.getEntity(String.class)).matches("unprocessable_entity", 422,
|
||||||
"Address a@f , is not of correct format");
|
"Address a@f , is not of correct format");
|
||||||
@ -155,7 +158,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "", "0"));
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "", "0"));
|
||||||
|
|
||||||
ErrorMessages.assertThat(response.getEntity(String.class)).matches("unprocessable_entity", 422,
|
ErrorMessages.assertThat(response.getEntity(String.class)).matches("unprocessable_entity", 422,
|
||||||
"[address may not be empty (was )");
|
"[address may not be empty (was )");
|
||||||
@ -173,7 +176,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
"01234567889012345678890123456788901234567889012345678890123456788901234567889012345678890123456788901234567889"
|
"01234567889012345678890123456788901234567889012345678890123456788901234567889012345678890123456788901234567889"
|
||||||
+ "01234567889012345678890123456788901234567889012345678890123456788901234567889012345678890123456788901234567889"
|
+ "01234567889012345678890123456788901234567889012345678890123456788901234567889012345678890123456788901234567889"
|
||||||
+ "01234567889012345678890123456788901234567889012345678890123456788901234567889012345678890123456788901234567889",
|
+ "01234567889012345678890123456788901234567889012345678890123456788901234567889012345678890123456788901234567889",
|
||||||
NotificationMethodType.EMAIL, "a@b", "0"));
|
NOTIFICATION_METHOD_EMAIL, "a@b", "0"));
|
||||||
|
|
||||||
ErrorMessages.assertThat(response.getEntity(String.class)).matches("unprocessable_entity", 422,
|
ErrorMessages.assertThat(response.getEntity(String.class)).matches("unprocessable_entity", 422,
|
||||||
"[name size must be between 1 and 250");
|
"[name size must be between 1 and 250");
|
||||||
@ -189,7 +192,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
ClientResponse.class,
|
ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand(
|
new CreateNotificationMethodCommand(
|
||||||
"MyEmail",
|
"MyEmail",
|
||||||
NotificationMethodType.EMAIL,
|
NOTIFICATION_METHOD_EMAIL,
|
||||||
"abcdefghi@0123456789012345678901234567890"
|
"abcdefghi@0123456789012345678901234567890"
|
||||||
+ "12345678901234567890123456789012345678901234567890"
|
+ "12345678901234567890123456789012345678901234567890"
|
||||||
+ "12345678901234567890123456789012345678901234567890"
|
+ "12345678901234567890123456789012345678901234567890"
|
||||||
@ -215,11 +218,11 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyEmail", NotificationMethodType.EMAIL, "a@a.com", "60"));
|
new CreateNotificationMethodCommand("MyEmail", NOTIFICATION_METHOD_EMAIL, "a@a.com", "60"));
|
||||||
|
|
||||||
String e = response.getEntity(String.class);
|
String e = response.getEntity(String.class);
|
||||||
ErrorMessages.assertThat(e).matches("unprocessable_entity", 422,
|
ErrorMessages.assertThat(e).matches("unprocessable_entity", 422,
|
||||||
"Period can not be non zero for Email");
|
"Period can not be non zero for EMAIL");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void should422OnNonZeroPeriodForPagerduty() {
|
public void should422OnNonZeroPeriodForPagerduty() {
|
||||||
@ -228,12 +231,12 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyPd", NotificationMethodType.PAGERDUTY,
|
new CreateNotificationMethodCommand("MyPd", NOTIFICATION_METHOD_PAGERDUTY,
|
||||||
"http://localhost", "60"));
|
"http://localhost", "60"));
|
||||||
|
|
||||||
String e = response.getEntity(String.class);
|
String e = response.getEntity(String.class);
|
||||||
ErrorMessages.assertThat(e).matches("unprocessable_entity", 422,
|
ErrorMessages.assertThat(e).matches("unprocessable_entity", 422,
|
||||||
"Period can not be non zero for Pagerduty");
|
"Period can not be non zero for PAGERDUTY");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void should422OnInvalidPeriodForWebhook() {
|
public void should422OnInvalidPeriodForWebhook() {
|
||||||
@ -242,7 +245,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyWh", NotificationMethodType.WEBHOOK,
|
new CreateNotificationMethodCommand("MyWh", NOTIFICATION_METHOD_WEBHOOK,
|
||||||
"http://localhost", "5"));
|
"http://localhost", "5"));
|
||||||
|
|
||||||
String e = response.getEntity(String.class);
|
String e = response.getEntity(String.class);
|
||||||
@ -261,7 +264,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
NotificationMethod
|
NotificationMethod
|
||||||
nm =
|
nm =
|
||||||
new NotificationMethod((String) lhm.get("id"), (String) lhm.get("name"),
|
new NotificationMethod((String) lhm.get("id"), (String) lhm.get("name"),
|
||||||
NotificationMethodType.fromJson((String) lhm.get("type")),
|
(String) lhm.get("type"),
|
||||||
(String) lhm.get("address"), 0);
|
(String) lhm.get("address"), 0);
|
||||||
|
|
||||||
List<NotificationMethod> notificationMethods = Arrays.asList(nm);
|
List<NotificationMethod> notificationMethods = Arrays.asList(nm);
|
||||||
@ -349,7 +352,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyWh", NotificationMethodType.WEBHOOK,
|
new CreateNotificationMethodCommand("MyWh", NOTIFICATION_METHOD_WEBHOOK,
|
||||||
"http://localhost", "0"));
|
"http://localhost", "0"));
|
||||||
|
|
||||||
NotificationMethod newNotificationMethod = response.getEntity(NotificationMethod.class);
|
NotificationMethod newNotificationMethod = response.getEntity(NotificationMethod.class);
|
||||||
@ -358,7 +361,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
assertEquals(response.getStatus(), 201);
|
assertEquals(response.getStatus(), 201);
|
||||||
assertEquals(location, "/v2.0/notification-methods/" + newNotificationMethod.getId());
|
assertEquals(location, "/v2.0/notification-methods/" + newNotificationMethod.getId());
|
||||||
assertEquals(newNotificationMethod, notificationMethodWebhook);
|
assertEquals(newNotificationMethod, notificationMethodWebhook);
|
||||||
verify(repo).create(eq("abc"), eq("MyWh"), eq(NotificationMethodType.WEBHOOK), anyString(), eq(0));
|
verify(repo).create(eq("abc"), eq("MyWh"), eq(NOTIFICATION_METHOD_WEBHOOK), anyString(), eq(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shouldCreateWebhookNotificationWithNonZeroPeriod() {
|
public void shouldCreateWebhookNotificationWithNonZeroPeriod() {
|
||||||
@ -367,7 +370,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyWh", NotificationMethodType.WEBHOOK,
|
new CreateNotificationMethodCommand("MyWh", NOTIFICATION_METHOD_WEBHOOK,
|
||||||
"http://localhost", "60"));
|
"http://localhost", "60"));
|
||||||
|
|
||||||
NotificationMethod newNotificationMethod = response.getEntity(NotificationMethod.class);
|
NotificationMethod newNotificationMethod = response.getEntity(NotificationMethod.class);
|
||||||
@ -376,7 +379,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
assertEquals(response.getStatus(), 201);
|
assertEquals(response.getStatus(), 201);
|
||||||
assertEquals(location, "/v2.0/notification-methods/" + newNotificationMethod.getId());
|
assertEquals(location, "/v2.0/notification-methods/" + newNotificationMethod.getId());
|
||||||
assertEquals(newNotificationMethod, notificationMethodWebhook);
|
assertEquals(newNotificationMethod, notificationMethodWebhook);
|
||||||
verify(repo).create(eq("abc"), eq("MyWh"), eq(NotificationMethodType.WEBHOOK), anyString(), eq(60));
|
verify(repo).create(eq("abc"), eq("MyWh"), eq(NOTIFICATION_METHOD_WEBHOOK), anyString(), eq(60));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shouldCreatePagerdutyNotification() {
|
public void shouldCreatePagerdutyNotification() {
|
||||||
@ -385,7 +388,7 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
.header("X-Tenant-Id", "abc")
|
.header("X-Tenant-Id", "abc")
|
||||||
.header("Content-Type", MediaType.APPLICATION_JSON)
|
.header("Content-Type", MediaType.APPLICATION_JSON)
|
||||||
.post(ClientResponse.class,
|
.post(ClientResponse.class,
|
||||||
new CreateNotificationMethodCommand("MyPd", NotificationMethodType.PAGERDUTY,
|
new CreateNotificationMethodCommand("MyPd", NOTIFICATION_METHOD_PAGERDUTY,
|
||||||
"http://localhost", "0"));
|
"http://localhost", "0"));
|
||||||
|
|
||||||
NotificationMethod newNotificationMethod = response.getEntity(NotificationMethod.class);
|
NotificationMethod newNotificationMethod = response.getEntity(NotificationMethod.class);
|
||||||
@ -394,6 +397,6 @@ public class NotificationMethodResourceTest extends AbstractMonApiResourceTest {
|
|||||||
assertEquals(response.getStatus(), 201);
|
assertEquals(response.getStatus(), 201);
|
||||||
assertEquals(location, "/v2.0/notification-methods/" + newNotificationMethod.getId());
|
assertEquals(location, "/v2.0/notification-methods/" + newNotificationMethod.getId());
|
||||||
assertEquals(newNotificationMethod, notificationMethodPagerduty);
|
assertEquals(newNotificationMethod, notificationMethodPagerduty);
|
||||||
verify(repo).create(eq("abc"), eq("MyPd"), eq(NotificationMethodType.PAGERDUTY), anyString(), eq(0));
|
verify(repo).create(eq("abc"), eq("MyPd"), eq(NOTIFICATION_METHOD_PAGERDUTY), anyString(), eq(0));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,108 @@
|
|||||||
|
/*
|
||||||
|
* (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package monasca.api.resource;
|
||||||
|
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
import static org.testng.Assert.assertEquals;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.TreeSet;
|
||||||
|
|
||||||
|
import org.testng.annotations.Test;
|
||||||
|
|
||||||
|
import monasca.api.ApiConfig;
|
||||||
|
import monasca.api.domain.model.common.Paged;
|
||||||
|
import monasca.api.domain.model.notificationmethod.NotificationMethodType;
|
||||||
|
import monasca.api.domain.model.notificationmethod.NotificationMethodTypesRepo;
|
||||||
|
import monasca.api.infrastructure.persistence.PersistUtils;
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public class NotificationMethodTypeResourceTest extends AbstractMonApiResourceTest {
|
||||||
|
|
||||||
|
private ApiConfig config;
|
||||||
|
NotificationMethodTypesResource resource;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setupResources() throws Exception {
|
||||||
|
super.setupResources();
|
||||||
|
config = mock(ApiConfig.class);
|
||||||
|
config.validNotificationPeriods = Arrays.asList(0, 60);
|
||||||
|
|
||||||
|
List<String> NOTIFICATION_METHODS = Arrays.asList("Email", "PagerDuty", "WebHook");
|
||||||
|
|
||||||
|
NotificationMethodTypesRepo repo = mock(NotificationMethodTypesRepo.class);
|
||||||
|
when(repo.listNotificationMethodTypes())
|
||||||
|
.thenReturn(NOTIFICATION_METHODS);
|
||||||
|
|
||||||
|
resource = new NotificationMethodTypesResource(config, repo,new PersistUtils());
|
||||||
|
addResources(resource);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private Set<String> getNotificationMethods(List<?> elements)
|
||||||
|
{
|
||||||
|
Set<String> returnNotificationMethods = new TreeSet<String>();
|
||||||
|
|
||||||
|
for ( Object p : elements){
|
||||||
|
Map mp = (Map)p;
|
||||||
|
NotificationMethodType m = new NotificationMethodType((String)mp.get("type"));
|
||||||
|
returnNotificationMethods.add(m.getType());
|
||||||
|
}
|
||||||
|
return returnNotificationMethods;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shouldListCorrectNotifcationTypes() throws Exception
|
||||||
|
{
|
||||||
|
List<Paged> pages = (List<Paged>) client().resource("/v2.0/notification-methods/types").get(Paged.class).elements;
|
||||||
|
|
||||||
|
Set<String> responseGot = getNotificationMethods(pages);
|
||||||
|
Set<String> expectedNotificationMethodTypes = new TreeSet<String>(Arrays.asList("EMAIL", "WEBHOOK", "PAGERDUTY"));
|
||||||
|
assertEquals(responseGot, expectedNotificationMethodTypes);
|
||||||
|
|
||||||
|
// Change the config to have one notification type
|
||||||
|
|
||||||
|
NotificationMethodTypesRepo repo = mock(NotificationMethodTypesRepo.class);
|
||||||
|
when(repo.listNotificationMethodTypes())
|
||||||
|
.thenReturn(Arrays.asList("Email"));
|
||||||
|
resource.repo = repo;
|
||||||
|
pages = (List<Paged>) client().resource("/v2.0/notification-methods/types").get(Paged.class).elements;
|
||||||
|
responseGot = getNotificationMethods(pages);
|
||||||
|
|
||||||
|
expectedNotificationMethodTypes = new TreeSet<String>(Arrays.asList("EMAIL"));
|
||||||
|
assertEquals(responseGot, expectedNotificationMethodTypes);
|
||||||
|
|
||||||
|
|
||||||
|
// Change the config to have more than one notification type
|
||||||
|
repo = mock(NotificationMethodTypesRepo.class);
|
||||||
|
when(repo.listNotificationMethodTypes())
|
||||||
|
.thenReturn(Arrays.asList("Email", "Type1", "Type2", "Type3"));
|
||||||
|
resource.repo = repo;
|
||||||
|
pages = (List<Paged>) client().resource("/v2.0/notification-methods/types").get(Paged.class).elements;
|
||||||
|
|
||||||
|
responseGot = getNotificationMethods(pages);
|
||||||
|
expectedNotificationMethodTypes = new TreeSet<String>(Arrays.asList("EMAIL", "TYPE1", "TYPE2", "TYPE3"));
|
||||||
|
assertEquals(responseGot, expectedNotificationMethodTypes);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,4 @@
|
|||||||
|
CREATE TABLE `notification_method_type` (
|
||||||
|
`name` varchar(20) NOT NULL DEFAULT '',
|
||||||
|
PRIMARY KEY (`name`)
|
||||||
|
);
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2014 Hewlett-Packard
|
# (C) Copyright 2014,2016 Hewlett Packard Enterprise Development LP
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
38
monasca_api/api/notificationstype_api_v2.py
Normal file
38
monasca_api/api/notificationstype_api_v2.py
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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 oslo_log import log
|
||||||
|
|
||||||
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class NotificationsTypeV2API(object):
|
||||||
|
def __init__(self):
|
||||||
|
super(NotificationsTypeV2API, self).__init__()
|
||||||
|
LOG.info('Initializing NotificationsTypeV2API!')
|
||||||
|
|
||||||
|
def on_post(self, req, res):
|
||||||
|
res.status = '501 Not Implemented'
|
||||||
|
|
||||||
|
def on_delete(self, req, res):
|
||||||
|
res.status = '501 Not Implemented'
|
||||||
|
|
||||||
|
def on_get(self, req, res):
|
||||||
|
res.status = '501 Not Implemented'
|
||||||
|
|
||||||
|
def on_put(self, req, res):
|
||||||
|
res.status = '501 Not Implemented'
|
||||||
|
|
||||||
|
def on_patch(self, req):
|
||||||
|
res.status = '501 Not Implemented'
|
@ -1,5 +1,5 @@
|
|||||||
# Copyright 2014 IBM Corp
|
# Copyright 2014 IBM Corp
|
||||||
# Copyright 2015-2016 Hewlett Packard Enterprise Development Company LP
|
# Copyright 2015-2016 Hewlett Packard Enterprise Development LP
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -45,7 +45,9 @@ dispatcher_opts = [cfg.StrOpt('versions', default=None,
|
|||||||
cfg.StrOpt('notification_methods', default=None,
|
cfg.StrOpt('notification_methods', default=None,
|
||||||
help='Notification methods'),
|
help='Notification methods'),
|
||||||
cfg.StrOpt('dimension_values', default=None,
|
cfg.StrOpt('dimension_values', default=None,
|
||||||
help='Dimension values')]
|
help='Dimension values'),
|
||||||
|
cfg.StrOpt('notification_method_types', default=None,
|
||||||
|
help='notification_method_types methods')]
|
||||||
|
|
||||||
dispatcher_group = cfg.OptGroup(name='dispatcher', title='dispatcher')
|
dispatcher_group = cfg.OptGroup(name='dispatcher', title='dispatcher')
|
||||||
cfg.CONF.register_group(dispatcher_group)
|
cfg.CONF.register_group(dispatcher_group)
|
||||||
@ -113,6 +115,10 @@ def launch(conf, config_file="/etc/monasca/api-config.conf"):
|
|||||||
dimension_values = simport.load(cfg.CONF.dispatcher.dimension_values)()
|
dimension_values = simport.load(cfg.CONF.dispatcher.dimension_values)()
|
||||||
app.add_route("/v2.0/metrics/dimensions/names/values", dimension_values)
|
app.add_route("/v2.0/metrics/dimensions/names/values", dimension_values)
|
||||||
|
|
||||||
|
notification_method_types = simport.load(
|
||||||
|
cfg.CONF.dispatcher.notification_method_types)()
|
||||||
|
app.add_route("/v2.0/notification-methods/types", notification_method_types)
|
||||||
|
|
||||||
LOG.debug('Dispatcher drivers have been added to the routes!')
|
LOG.debug('Dispatcher drivers have been added to the routes!')
|
||||||
return app
|
return app
|
||||||
|
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
# (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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 monasca_common.repositories.mysql import mysql_repository
|
||||||
|
from oslo_log import log
|
||||||
|
|
||||||
|
from monasca_api.common.repositories import notification_method_type_repository as nr
|
||||||
|
|
||||||
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class NotificationMethodTypeRepository(mysql_repository.MySQLRepository,
|
||||||
|
nr.NotificationMethodTypeRepository):
|
||||||
|
def __init__(self):
|
||||||
|
|
||||||
|
super(NotificationMethodTypeRepository, self).__init__()
|
||||||
|
|
||||||
|
@mysql_repository.mysql_try_catch_block
|
||||||
|
def list_notification_method_types(self):
|
||||||
|
query = "select name from notification_method_type"
|
||||||
|
rows = self._execute_query(query)
|
||||||
|
return rows
|
@ -0,0 +1,25 @@
|
|||||||
|
# (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
import abc
|
||||||
|
|
||||||
|
import six
|
||||||
|
|
||||||
|
|
||||||
|
@six.add_metaclass(abc.ABCMeta)
|
||||||
|
class NotificationMethodTypeRepository(object):
|
||||||
|
|
||||||
|
@abc.abstractmethod
|
||||||
|
def list_notification_method_types(self):
|
||||||
|
return
|
@ -1,7 +1,7 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Copyright 2015 Robin Hood
|
# Copyright 2015 Robin Hood
|
||||||
# Copyright 2016 FUJITSU LIMITED
|
# Copyright 2016 FUJITSU LIMITED
|
||||||
# (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP
|
# (C) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
@ -80,6 +80,11 @@ def create_nm_model(metadata=None):
|
|||||||
Column('updated_at', DateTime))
|
Column('updated_at', DateTime))
|
||||||
|
|
||||||
|
|
||||||
|
def create_nmt_model(metadata=None):
|
||||||
|
return Table('notification_method_type', metadata,
|
||||||
|
Column('name', String(20), primary_key=True))
|
||||||
|
|
||||||
|
|
||||||
def create_mdd_model(metadata=None):
|
def create_mdd_model(metadata=None):
|
||||||
return Table('metric_definition_dimensions', metadata,
|
return Table('metric_definition_dimensions', metadata,
|
||||||
Column('id', Binary),
|
Column('id', Binary),
|
||||||
|
@ -0,0 +1,44 @@
|
|||||||
|
# (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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 monasca_api.common.repositories import notification_method_type_repository as nr
|
||||||
|
from monasca_api.common.repositories.sqla import models
|
||||||
|
from monasca_api.common.repositories.sqla import sql_repository
|
||||||
|
from oslo_log import log
|
||||||
|
from sqlalchemy import MetaData
|
||||||
|
from sqlalchemy import select
|
||||||
|
|
||||||
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class NotificationMethodTypeRepository(sql_repository.SQLRepository,
|
||||||
|
nr.NotificationMethodTypeRepository):
|
||||||
|
def __init__(self):
|
||||||
|
|
||||||
|
super(NotificationMethodTypeRepository, self).__init__()
|
||||||
|
|
||||||
|
metadata = MetaData()
|
||||||
|
self.nmt = models.create_nmt_model(metadata)
|
||||||
|
|
||||||
|
nmt = self.nmt
|
||||||
|
self._nmt_query = select([nmt.c.name])
|
||||||
|
|
||||||
|
@sql_repository.sql_try_catch_block
|
||||||
|
def list_notification_method_types(self):
|
||||||
|
|
||||||
|
with self._db_engine.connect() as conn:
|
||||||
|
notification_method_types = conn.execute(self._nmt_query).fetchall()
|
||||||
|
|
||||||
|
return [row[0] for row in notification_method_types]
|
@ -1,4 +1,4 @@
|
|||||||
# (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
# (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -30,7 +30,7 @@ schemes = ['http', 'https']
|
|||||||
|
|
||||||
notification_schema = {
|
notification_schema = {
|
||||||
Required('name'): Schema(All(Any(str, unicode), Length(max=250))),
|
Required('name'): Schema(All(Any(str, unicode), Length(max=250))),
|
||||||
Required('type'): Schema(Any("EMAIL", "email", "WEBHOOK", "webhook", "PAGERDUTY", "pagerduty")),
|
Required('type'): Schema(Any(str)),
|
||||||
Required('address'): Schema(All(Any(str, unicode), Length(max=512))),
|
Required('address'): Schema(All(Any(str, unicode), Length(max=512))),
|
||||||
Marker('period'): All(Any(int, str))}
|
Marker('period'): All(Any(int, str))}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# Copyright 2014 IBM Corp.
|
# Copyright 2014 IBM Corp.
|
||||||
# Copyright 2016 FUJITSU LIMITED
|
# Copyright 2016 FUJITSU LIMITED
|
||||||
# (C) Copyright 2016 Hewlett Packard Enterprise Development Company LP
|
# (C) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -31,7 +31,8 @@ need to have a bit more re-engineering to get it right.
|
|||||||
"""
|
"""
|
||||||
global_opts = [cfg.StrOpt('region', help='Region that API is running in'),
|
global_opts = [cfg.StrOpt('region', help='Region that API is running in'),
|
||||||
cfg.ListOpt('valid_notification_periods', default=[0, 60],
|
cfg.ListOpt('valid_notification_periods', default=[0, 60],
|
||||||
help='Valid periods for notification methods')]
|
help='Valid periods for notification methods')
|
||||||
|
]
|
||||||
|
|
||||||
cfg.CONF.register_opts(global_opts)
|
cfg.CONF.register_opts(global_opts)
|
||||||
|
|
||||||
@ -77,6 +78,8 @@ repositories_opts = [
|
|||||||
cfg.StrOpt('transforms_driver', default='mysql_transforms_repo',
|
cfg.StrOpt('transforms_driver', default='mysql_transforms_repo',
|
||||||
help='The repository driver to use for transforms'),
|
help='The repository driver to use for transforms'),
|
||||||
cfg.StrOpt('notifications_driver', default='mysql_notifications_repo',
|
cfg.StrOpt('notifications_driver', default='mysql_notifications_repo',
|
||||||
|
help='The repository driver to use for notifications'),
|
||||||
|
cfg.StrOpt('notification_method_type_driver', default='mysql_notifications_repo',
|
||||||
help='The repository driver to use for notifications')]
|
help='The repository driver to use for notifications')]
|
||||||
|
|
||||||
repositories_group = cfg.OptGroup(name='repositories', title='repositories')
|
repositories_group = cfg.OptGroup(name='repositories', title='repositories')
|
||||||
@ -144,5 +147,6 @@ sql_opts = [cfg.StrOpt('url', default=None), cfg.StrOpt('host', default=None),
|
|||||||
cfg.StrOpt('database', default=None), cfg.StrOpt('query', default=None)]
|
cfg.StrOpt('database', default=None), cfg.StrOpt('query', default=None)]
|
||||||
sql_group = cfg.OptGroup(name='database', title='sql')
|
sql_group = cfg.OptGroup(name='database', title='sql')
|
||||||
|
|
||||||
|
|
||||||
cfg.CONF.register_group(sql_group)
|
cfg.CONF.register_group(sql_group)
|
||||||
cfg.CONF.register_opts(sql_opts, sql_group)
|
cfg.CONF.register_opts(sql_opts, sql_group)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# (C) Copyright 2014-2016 Hewlett Packard Enterprise Development Company LP
|
# (C) Copyright 2014-2016 Hewlett Packard Enterprise Development LP
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -39,6 +39,8 @@ class Notifications(notifications_api_v2.NotificationsV2API):
|
|||||||
cfg.CONF.security.default_authorized_roles)
|
cfg.CONF.security.default_authorized_roles)
|
||||||
self._notifications_repo = simport.load(
|
self._notifications_repo = simport.load(
|
||||||
cfg.CONF.repositories.notifications_driver)()
|
cfg.CONF.repositories.notifications_driver)()
|
||||||
|
self._notification_method_type_repo = simport.load(
|
||||||
|
cfg.CONF.repositories.notification_method_type_driver)()
|
||||||
self.valid_periods = cfg.CONF.valid_notification_periods
|
self.valid_periods = cfg.CONF.valid_notification_periods
|
||||||
|
|
||||||
def _parse_and_validate_notification(self, notification, require_all=False):
|
def _parse_and_validate_notification(self, notification, require_all=False):
|
||||||
@ -70,6 +72,15 @@ class Notifications(notifications_api_v2.NotificationsV2API):
|
|||||||
"A notification method with name {} already exists with id {}"
|
"A notification method with name {} already exists with id {}"
|
||||||
.format(name, found_notification_id))
|
.format(name, found_notification_id))
|
||||||
|
|
||||||
|
def _validate_notification_method_type_exist(self, nmt):
|
||||||
|
notification_methods = self._notification_method_type_repo.list_notification_method_types()
|
||||||
|
exists = nmt.upper() in notification_methods
|
||||||
|
|
||||||
|
if not exists:
|
||||||
|
LOG.warn("Found no notification method type {} . Did you install/enable the plugin for that type?"
|
||||||
|
.format(nmt))
|
||||||
|
raise falcon.HTTPBadRequest('Bad Request', "Not a valid notification method type {} ".format(nmt))
|
||||||
|
|
||||||
@resource.resource_try_catch_block
|
@resource.resource_try_catch_block
|
||||||
def _create_notification(self, tenant_id, notification, uri):
|
def _create_notification(self, tenant_id, notification, uri):
|
||||||
|
|
||||||
@ -79,6 +90,7 @@ class Notifications(notifications_api_v2.NotificationsV2API):
|
|||||||
period = notification['period']
|
period = notification['period']
|
||||||
|
|
||||||
self._validate_name_not_conflicting(tenant_id, name)
|
self._validate_name_not_conflicting(tenant_id, name)
|
||||||
|
self._validate_notification_method_type_exist(notification_type)
|
||||||
|
|
||||||
notification_id = self._notifications_repo.create_notification(
|
notification_id = self._notifications_repo.create_notification(
|
||||||
tenant_id,
|
tenant_id,
|
||||||
@ -103,6 +115,7 @@ class Notifications(notifications_api_v2.NotificationsV2API):
|
|||||||
period = notification['period']
|
period = notification['period']
|
||||||
|
|
||||||
self._validate_name_not_conflicting(tenant_id, name, expected_id=notification_id)
|
self._validate_name_not_conflicting(tenant_id, name, expected_id=notification_id)
|
||||||
|
self._validate_notification_method_type_exist(notification_type)
|
||||||
|
|
||||||
self._notifications_repo.update_notification(notification_id, tenant_id, name,
|
self._notifications_repo.update_notification(notification_id, tenant_id, name,
|
||||||
notification_type,
|
notification_type,
|
||||||
|
47
monasca_api/v2/reference/notificationstype.py
Normal file
47
monasca_api/v2/reference/notificationstype.py
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
# (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
import falcon
|
||||||
|
from monasca_common.simport import simport
|
||||||
|
from oslo_config import cfg
|
||||||
|
from oslo_log import log
|
||||||
|
|
||||||
|
from monasca_api.api import notificationstype_api_v2
|
||||||
|
from monasca_api.v2.reference import helpers
|
||||||
|
from monasca_api.v2.reference import resource
|
||||||
|
|
||||||
|
LOG = log.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
class NotificationsType(notificationstype_api_v2.NotificationsTypeV2API):
|
||||||
|
def __init__(self):
|
||||||
|
super(NotificationsType, self).__init__()
|
||||||
|
self._notification_method_type_repo = simport.load(
|
||||||
|
cfg.CONF.repositories.notification_method_type_driver)()
|
||||||
|
|
||||||
|
@resource.resource_try_catch_block
|
||||||
|
def _list_notifications(self, uri, limit):
|
||||||
|
rows = self._notification_method_type_repo.list_notification_method_types()
|
||||||
|
result = [dict(type=row) for row in rows]
|
||||||
|
return helpers.paginate(result, uri, limit)
|
||||||
|
|
||||||
|
def on_get(self, req, res):
|
||||||
|
|
||||||
|
# This is to provide consistency. Pagination is not really supported here as there
|
||||||
|
# are not that many rows
|
||||||
|
limit = helpers.get_limit(req)
|
||||||
|
result = self._list_notifications(req.uri, limit)
|
||||||
|
|
||||||
|
res.body = helpers.dumpit_utf8(result)
|
||||||
|
res.status = falcon.HTTP_200
|
@ -1,4 +1,4 @@
|
|||||||
# (C) Copyright 2015-2016 Hewlett Packard Enterprise Development Company LP
|
# (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -144,6 +144,13 @@ class MonascaClient(rest_client.RestClient):
|
|||||||
resp, response_body = self.patch(uri, json.dumps(request_body))
|
resp, response_body = self.patch(uri, json.dumps(request_body))
|
||||||
return resp, json.loads(response_body)
|
return resp, json.loads(response_body)
|
||||||
|
|
||||||
|
def list_notification_method_types(self, query_params=None):
|
||||||
|
uri = 'notification-methods/types'
|
||||||
|
if query_params is not None:
|
||||||
|
uri = uri + query_params
|
||||||
|
resp, response_body = self.get(uri)
|
||||||
|
return resp, json.loads(response_body)
|
||||||
|
|
||||||
def create_alarm_definitions(self, alarm_definitions):
|
def create_alarm_definitions(self, alarm_definitions):
|
||||||
uri = 'alarm-definitions'
|
uri = 'alarm-definitions'
|
||||||
request_body = json.dumps(alarm_definitions)
|
request_body = json.dumps(alarm_definitions)
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
# (C) Copyright 2016 Hewlett Packard Enterprise Development 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
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
import time
|
||||||
|
|
||||||
|
import six.moves.urllib.parse as urlparse
|
||||||
|
|
||||||
|
from monasca_tempest_tests.tests.api import base
|
||||||
|
from monasca_tempest_tests.tests.api import constants
|
||||||
|
from monasca_tempest_tests.tests.api import helpers
|
||||||
|
from tempest.common.utils import data_utils
|
||||||
|
from tempest import test
|
||||||
|
from tempest.lib import exceptions
|
||||||
|
|
||||||
|
|
||||||
|
class TestNotificationMethodType(base.BaseMonascaTest):
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def resource_setup(cls):
|
||||||
|
super(TestNotificationMethodType, cls).resource_setup()
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def resource_cleanup(cls):
|
||||||
|
super(TestNotificationMethodType, cls).resource_cleanup()
|
||||||
|
|
||||||
|
@test.attr(type="gate")
|
||||||
|
def test_list_notification_method_type(self):
|
||||||
|
|
||||||
|
resp, response_body = self.monasca_client.list_notification_method_types()
|
||||||
|
self.assertEqual(200, resp.status)
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
# (C) Copyright 2015-2016 Hewlett Packard Enterprise Development Company LP
|
# (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
# 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
|
# not use this file except in compliance with the License. You may obtain
|
||||||
@ -155,7 +155,7 @@ class TestNotificationMethods(base.BaseMonascaTest):
|
|||||||
@test.attr(type=['negative'])
|
@test.attr(type=['negative'])
|
||||||
def test_create_notification_method_with_invalid_type(self):
|
def test_create_notification_method_with_invalid_type(self):
|
||||||
notification = helpers.create_notification(type='random')
|
notification = helpers.create_notification(type='random')
|
||||||
self.assertRaises((exceptions.BadRequest, exceptions.UnprocessableEntity),
|
self.assertRaises((exceptions.BadRequest, exceptions.NotFound, exceptions.UnprocessableEntity),
|
||||||
self.monasca_client.create_notifications,
|
self.monasca_client.create_notifications,
|
||||||
notification)
|
notification)
|
||||||
|
|
||||||
@ -543,7 +543,7 @@ class TestNotificationMethods(base.BaseMonascaTest):
|
|||||||
notification)
|
notification)
|
||||||
id = response_body['id']
|
id = response_body['id']
|
||||||
self.assertEqual(201, resp.status)
|
self.assertEqual(201, resp.status)
|
||||||
self.assertRaises((exceptions.BadRequest, exceptions.UnprocessableEntity),
|
self.assertRaises((exceptions.BadRequest, exceptions.NotFound, exceptions.UnprocessableEntity),
|
||||||
self.monasca_client.update_notification_method, id,
|
self.monasca_client.update_notification_method, id,
|
||||||
name=response_body['name'], type='random',
|
name=response_body['name'], type='random',
|
||||||
address=response_body['address'], period=0)
|
address=response_body['address'], period=0)
|
||||||
@ -791,7 +791,7 @@ class TestNotificationMethods(base.BaseMonascaTest):
|
|||||||
notification)
|
notification)
|
||||||
id = response_body['id']
|
id = response_body['id']
|
||||||
self.assertEqual(201, resp.status)
|
self.assertEqual(201, resp.status)
|
||||||
self.assertRaises((exceptions.BadRequest, exceptions.UnprocessableEntity),
|
self.assertRaises((exceptions.BadRequest, exceptions.NotFound, exceptions.UnprocessableEntity),
|
||||||
self.monasca_client.patch_notification_method, id, type='random')
|
self.monasca_client.patch_notification_method, id, type='random')
|
||||||
resp, response_body = \
|
resp, response_body = \
|
||||||
self.monasca_client.delete_notification_method(id)
|
self.monasca_client.delete_notification_method(id)
|
||||||
|
Loading…
Reference in New Issue
Block a user