68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
# Copyright 2015 Mirantis, Inc.
|
|
#
|
|
# 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 fuelclient.cli import error
|
|
|
|
from fuelclient.objects import base
|
|
|
|
|
|
class Notifications(base.BaseObject):
|
|
|
|
class_api_path = "notifications/"
|
|
instance_api_path = "notifications/{0}"
|
|
|
|
default_topic = 'done'
|
|
|
|
@classmethod
|
|
def mark_as_read(cls, ids=None):
|
|
if not ids:
|
|
raise error.BadDataException('Message id not specified.')
|
|
|
|
if '*' in ids:
|
|
data = Notifications.get_all_data()
|
|
else:
|
|
try:
|
|
ids = map(int, ids)
|
|
except ValueError:
|
|
raise error.BadDataException(
|
|
"Numerical ids expected or the '*' symbol.")
|
|
notifications = Notifications.get_by_ids(ids)
|
|
|
|
data = [notification.get_fresh_data()
|
|
for notification in notifications]
|
|
|
|
for notification in data:
|
|
notification['status'] = 'read'
|
|
|
|
resp = cls.connection.put_request(
|
|
cls.class_api_path, data)
|
|
|
|
return resp
|
|
|
|
@classmethod
|
|
def send(cls, message, topic=default_topic):
|
|
if not topic:
|
|
topic = cls.default_topic
|
|
|
|
if not message:
|
|
raise error.BadDataException('Message not specified.')
|
|
|
|
resp = cls.connection.post_request(
|
|
cls.class_api_path, {
|
|
'message': message,
|
|
'topic': topic,
|
|
})
|
|
|
|
return resp
|