Skip to content

Commit

Permalink
Merge pull request #30 from hhovsepy/hawkular_integration
Browse files Browse the repository at this point in the history
Added new method to list events of Hawkular, added tests.
  • Loading branch information
psav committed May 3, 2016
2 parents ab273a3 + 14fa1cf commit 4208706
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 2 deletions.
24 changes: 22 additions & 2 deletions mgmtsystem/hawkular.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
from collections import namedtuple
from rest_client import ContainerClient

import sys

"""
Related yaml structures:
Expand All @@ -27,6 +29,8 @@
Server = namedtuple('Server', ['id', 'name', 'path'])
Deployment = namedtuple('Deployment', ['id', 'name', 'path'])
ServerStatus = namedtuple('ServerStatus', ['address', 'version', 'state', 'product', 'host'])
Event = namedtuple('event', ['id', 'eventType', 'ctime', 'dataSource', 'dataId',
'category', 'text'])


class Hawkular(MgmtSystemAPIBase):
Expand All @@ -52,13 +56,14 @@ class Hawkular(MgmtSystemAPIBase):
}

def __init__(self,
hostname, protocol="http", port=8080, entry="hawkular/inventory", **kwargs):
hostname, protocol="http", port=8080, **kwargs):
super(Hawkular, self).__init__(kwargs)
self.hostname = hostname
self.username = kwargs.get('username', '')
self.password = kwargs.get('password', '')
self.auth = self.username, self.password
self.api = ContainerClient(hostname, self.auth, protocol, port, entry)
self.api = ContainerClient(hostname, self.auth, protocol, port, "hawkular/inventory")
self.alerts_api = ContainerClient(hostname, self.auth, protocol, port, "hawkular/alerts")

def info(self):
raise NotImplementedError('info not implemented.')
Expand Down Expand Up @@ -189,3 +194,18 @@ def get_server_status(self, feed_id, resource_id):
value_j['Hostname'])
return entity
return None

def list_event(self, start_time=0, end_time=sys.maxsize):
"""Returns the list of events filtered by provided start time and end time.
Or lists all events if no argument provided.
This information is wrapped into Event."""
entities = []
entities_j = self.alerts_api.get_json('events?startTime={}&endTime={}'
.format(start_time, end_time))
if entities_j:
for entity_j in entities_j:
entity = Event(entity_j['id'], entity_j['eventType'], entity_j['ctime'],
entity_j['dataSource'], entity_j['dataId'],
entity_j['category'], entity_j['text'])
entities.append(entity)
return entities
19 changes: 19 additions & 0 deletions tests/test_hawkular.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,3 +100,22 @@ def test_num_deployment(provider):
deployments_count += len(provider.list_server_deployment(feed.id))
num_deployment = provider._stats_available['num_deployment'](provider)
assert num_deployment == deployments_count, "Number of deployments is wrong"


def test_list_event_empty(provider):
""" Checks that events are filtered and empty list is returned """
assert len(provider.list_event(0, 0)) == 0, "Unexpected events are returned"


def test_list_event(provider):
""" Checks whether is any event listed """
events = provider.list_event()
assert len(events) > 0, "No events are listed"
event = events[0]
assert event.id
assert event.eventType
assert event.ctime
assert event.dataSource
assert event.dataId
assert event.category
assert event.text

0 comments on commit 4208706

Please sign in to comment.