Add INF-320 support attribute-based filter
[pti/o2.git] / o2ims / views / alarm_route.py
index 6b32eee..21fed6d 100644 (file)
@@ -37,6 +37,31 @@ def configure_api_route():
                          'Page number of the results to fetch.' +
                          ' Default: 1',
                          _in='query', default=1)
+@api_monitoring_v1.param(
+    'all_fields',
+    'Set any value for show all fields. This value will cover "fields" ' +
+    'and "all_fields".',
+    _in='query')
+@api_monitoring_v1.param(
+    'fields',
+    'Set fields to show, split by comma, "/" for parent and children.' +
+    ' Like "name,parent/children". This value will cover' +
+    ' "exculde_fields".',
+    _in='query')
+@api_monitoring_v1.param(
+    'exclude_fields',
+    'Set fields to exclude showing, split by comma, "/" for parent and ' +
+    'children. Like "name,parent/children". This value will cover ' +
+    '"exclude_default".',
+    _in='query')
+@api_monitoring_v1.param(
+    'exclude_default',
+    'Exclude showing all default fields, Set "true" to enable.',
+    _in='query')
+@api_monitoring_v1.param(
+    'exclude_default',
+    'Exclude showing all default fields, Set "true" to enable.',
+    _in='query')
 class AlarmListRouter(Resource):
 
     model = AlarmDTO.alarm_event_record_get
@@ -45,10 +70,12 @@ class AlarmListRouter(Resource):
     def get(self):
         parser = reqparse.RequestParser()
         parser.add_argument(PAGE_PARAM, location='args')
+        parser.add_argument('filter', location='args')
         args = parser.parse_args()
         kwargs = {}
         if args.nextpage_opaque_marker is not None:
             kwargs['page'] = args.nextpage_opaque_marker
+        kwargs['filter'] = args.filter if args.filter is not None else ''
 
         ret = alarm_view.alarm_event_records(bus.uow, **kwargs)
         return link_header(request.full_path, ret)
@@ -57,6 +84,27 @@ class AlarmListRouter(Resource):
 @api_monitoring_v1.route("/alarms/<alarmEventRecordId>")
 @api_monitoring_v1.param('alarmEventRecordId', 'ID of the alarm event record')
 @api_monitoring_v1.response(404, 'Alarm Event Record not found')
+@api_monitoring_v1.param(
+    'all_fields',
+    'Set any value for show all fields. This value will cover "fields" ' +
+    'and "all_fields".',
+    _in='query')
+@api_monitoring_v1.param(
+    'fields',
+    'Set fields to show, split by comma, "/" for parent and children.' +
+    ' Like "name,parent/children". This value will cover' +
+    ' "exculde_fields".',
+    _in='query')
+@api_monitoring_v1.param(
+    'exclude_fields',
+    'Set fields to exclude showing, split by comma, "/" for parent and ' +
+    'children. Like "name,parent/children". This value will cover ' +
+    '"exclude_default".',
+    _in='query')
+@api_monitoring_v1.param(
+    'exclude_default',
+    'Exclude showing all default fields, Set "true" to enable.',
+    _in='query')
 class AlarmGetRouter(Resource):
 
     model = AlarmDTO.alarm_event_record_get
@@ -81,13 +129,44 @@ class SubscriptionsListRouter(Resource):
 
     @api_monitoring_v1.doc('List alarm subscriptions')
     @api_monitoring_v1.marshal_list_with(model)
+    @api_monitoring_v1.param(
+        PAGE_PARAM,
+        'Page number of the results to fetch. Default: 1',
+        _in='query', default=1)
+    @api_monitoring_v1.param(
+        'all_fields',
+        'Set any value for show all fields. This value will cover "fields" ' +
+        'and "all_fields".',
+        _in='query')
+    @api_monitoring_v1.param(
+        'fields',
+        'Set fields to show, split by comma, "/" for parent and children.' +
+        ' Like "name,parent/children". This value will cover' +
+        ' "exculde_fields".',
+        _in='query')
+    @api_monitoring_v1.param(
+        'exclude_fields',
+        'Set fields to exclude showing, split by comma, "/" for parent and ' +
+        'children. Like "name,parent/children". This value will cover ' +
+        '"exclude_default".',
+        _in='query')
+    @api_monitoring_v1.param(
+        'exclude_default',
+        'Exclude showing all default fields, Set "true" to enable.',
+        _in='query')
+    @api_monitoring_v1.param(
+        'exclude_default',
+        'Exclude showing all default fields, Set "true" to enable.',
+        _in='query')
     def get(self):
         parser = reqparse.RequestParser()
         parser.add_argument(PAGE_PARAM, location='args')
+        parser.add_argument('filter', location='args')
         args = parser.parse_args()
         kwargs = {}
         if args.nextpage_opaque_marker is not None:
             kwargs['page'] = args.nextpage_opaque_marker
+        kwargs['filter'] = args.filter if args.filter is not None else ''
 
         ret = alarm_view.subscriptions(bus.uow, **kwargs)
         return link_header(request.full_path, ret)
@@ -110,6 +189,27 @@ class SubscriptionGetDelRouter(Resource):
 
     @api_monitoring_v1.doc('Get Alarm Subscription by ID')
     @api_monitoring_v1.marshal_with(model)
+    @api_monitoring_v1.param(
+        'all_fields',
+        'Set any value for show all fields. This value will cover "fields" ' +
+        'and "all_fields".',
+        _in='query')
+    @api_monitoring_v1.param(
+        'fields',
+        'Set fields to show, split by comma, "/" for parent and children.' +
+        ' Like "name,parent/children". This value will cover' +
+        ' "exculde_fields".',
+        _in='query')
+    @api_monitoring_v1.param(
+        'exclude_fields',
+        'Set fields to exclude showing, split by comma, "/" for parent and ' +
+        'children. Like "name,parent/children". This value will cover ' +
+        '"exclude_default".',
+        _in='query')
+    @api_monitoring_v1.param(
+        'exclude_default',
+        'Exclude showing all default fields, Set "true" to enable.',
+        _in='query')
     def get(self, alarmSubscriptionID):
         result = alarm_view.subscription_one(
             alarmSubscriptionID, bus.uow)