Support post event API.

Change-Id: Iabb54edfef6330625468c0b410b470a8120401c7
Implements: blueprint support-inspector-sb-api
This commit is contained in:
Ifat Afek 2017-01-18 17:50:29 +00:00
parent 603e2569b8
commit 3f713d8da3
4 changed files with 93 additions and 0 deletions

View File

@ -31,6 +31,7 @@ from keystoneauth1 import loading
import client import client
from v1.cli import alarm from v1.cli import alarm
from v1.cli import event
from v1.cli import rca from v1.cli import rca
from v1.cli import resource from v1.cli import resource
from v1.cli import template from v1.cli import template
@ -48,6 +49,7 @@ class VitrageCommandManager(commandmanager.CommandManager):
'template validate': template.TemplateValidate, 'template validate': template.TemplateValidate,
'template list': template.TemplateList, 'template list': template.TemplateList,
'template show': template.TemplateShow, 'template show': template.TemplateShow,
'event post': event.EventPost,
} }
def load_commands(self, namespace): def load_commands(self, namespace):

View File

@ -0,0 +1,61 @@
# Copyright 2017 - Nokia Corporation
#
# 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 cliff import command
from datetime import datetime
from vitrageclient.common import exc
# noinspection PyAbstractClass
class EventPost(command.Command):
"""Show the event of the system"""
def get_parser(self, prog_name):
parser = super(EventPost, self).get_parser(prog_name)
parser.add_argument('--type',
help='The type of the event')
parser.add_argument('--time',
default='',
help='The timestamp of the event in ISO 8601 '
'format: YYYY-MM-DDTHH:MM:SS.mmmmmm. '
'If not specified, the current time is used')
parser.add_argument('--details',
default='{}',
help='A json string with the event details')
return parser
def formatter_default(self):
return 'json'
def take_action(self, parsed_args):
if not parsed_args.type:
raise exc.CommandException(
message='Missing event type, please add --type')
if parsed_args.time:
event_time = parsed_args.time
else:
event_time = datetime.now().isoformat()
event_type = parsed_args.type
details = parsed_args.details
self.app.client.event.post(event_time=event_time,
event_type=event_type,
details=details)

View File

@ -13,6 +13,7 @@
from vitrageclient import client from vitrageclient import client
from vitrageclient.v1 import alarm from vitrageclient.v1 import alarm
from vitrageclient.v1 import event
from vitrageclient.v1 import rca from vitrageclient.v1 import rca
from vitrageclient.v1 import resource from vitrageclient.v1 import resource
from vitrageclient.v1 import template from vitrageclient.v1 import template
@ -29,3 +30,4 @@ class Client(object):
self.alarm = alarm.Alarm(self._api) self.alarm = alarm.Alarm(self._api)
self.rca = rca.Rca(self._api) self.rca = rca.Rca(self._api)
self.template = template.Template(self._api) self.template = template.Template(self._api)
self.event = event.Event(self._api)

28
vitrageclient/v1/event.py Normal file
View File

@ -0,0 +1,28 @@
# Copyright 2017 - Nokia Corporation
#
# 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.
class Event(object):
URL = 'v1/event/'
def __init__(self, api):
self.api = api
def post(self, event_time, event_type, details):
"""Post an event """
params = dict(time=event_time,
type=event_type,
details=details)
self.api.post(self.URL, json=params)