Merge "Add support for events to v1"

This commit is contained in:
Jenkins 2015-03-16 15:39:31 +00:00 committed by Gerrit Code Review
commit 6db1bdc111
6 changed files with 106 additions and 5 deletions

View File

@ -124,5 +124,45 @@ $ klugman streams --older_than 01-31-2015T13:30
$ klugman streams --older_than 01-31-2015T13:30 --state completed
...
```
$ klugman events --traits=os_distro:com.redhat
+--------------------+------------------------------------------+
| Property | Value |
+--------------------+------------------------------------------+
| _mark | 1 |
| bandwidth_in | 537783 |
| bandwidth_out | 19189871 |
| disk_gb | 160 |
| display_name | Instance_296624 |
| ephemeral_gb | 0 |
| event_type | compute.instance.update |
| instance_flavor | 4GB Standard Instance |
| instance_flavor_id | 5 |
| instance_id | 60c52a73-ec8e-47bc-81eb-eee38931a60e |
| instance_type | 4GB Standard Instance |
| launched_at | 2014-04-17 11:40:15.321940 |
| memory_mb | 4096 |
| message_id | 8eca72ba-3adb-4354-aaa4-f61980549e07 |
| os_architecture | x64 |
| os_distro | com.redhat |
| os_version | 6.3 |
| request_id | req-511c28a6-c6ec-4173-a124-7c92989e443c |
| root_gb | 160 |
| service | publisher-189550 |
| state | active |
| state_description | powering-off |
| tenant_id | 854126 |
| timestamp | 2015-03-03 20:13:56.560940 |
| user_id | 366869 |
| vcpus | 2 |
+--------------------+------------------------------------------+
$ klugman events --msg_id=8eca72ba-3adb-4354-aaa4-f61980549e07
...
$ klugman events --name=compute.instance.power_off.end
...
$ klugman events --from="2015-03-04T22:25" --to="2015-03-04T22:45"
```

View File

@ -27,7 +27,8 @@ def dump_response(keys, rows):
for row in rows:
x = prettytable.PrettyTable(["Property", "Value"])
for key in keys:
x.add_row([key, row.get(key)])
if key in row:
x.add_row([key, row[key]])
print x

View File

@ -40,7 +40,7 @@ import v1
import v2
versions = {1: v1.V1, 2: v2.V2}
latest = 2
latest = 1
def main():

View File

@ -191,15 +191,73 @@ class NumStreams(object):
return base.get(version.base_url, cmd, params)
class Events(object):
"""usage:
klugman.py events [options]
options:
--debug
--name <name>
return events of type <name>
--from <datetime>
list events generated before datetime
--to <datetime>
list events generated after datetime
--traits <traits>
list events with specific traits
--msg_id <message_id>
get event with <message_id>
Trait format:
"trait:value;trait:value;..."
"""
def cmdline(self, version, cmdline):
arguments = docopt(Events.__doc__, argv=cmdline)
debug = version.base_args['--debug']
if debug:
print arguments
response = self.do_event(version, arguments)
raw_rows = response.json(object_hook=jsonutil.object_hook)
keys = set()
for row in raw_rows:
keys.update(row.keys())
keys = sorted(list(keys))
base.dump_response(keys, raw_rows)
def do_event(self, version, arguments):
_from = arguments.get('--from')
_to = arguments.get('--to')
name = arguments.get('--name')
traits = arguments.get('--traits')
msg_id = arguments.get('--msg_id')
if msg_id:
cmd = "events/%s" % msg_id
return base.get(version.base_url, cmd, {})
cmd = "events"
params = base.remove_empty({'from_datetime': _from,
'to_datetime': _to,
'event_name': name,
'traits': traits})
return base.get(version.base_url, cmd, params)
class V1(base.Impl):
"""usage:
klugman.py streams [<args>...] [options]
klugman.py num-streams [<args>...] [options]
klugman.py events [<args>...] [options]
-h, --help show command options
"""
def __init__(self, base_url, base_args):
cmds = {'streams': Streams(),
'num-streams': NumStreams()}
'num-streams': NumStreams(),
'events': Events()}
super(V1, self).__init__(base_url, base_args, cmds, V1.__doc__)

View File

@ -65,6 +65,7 @@ class V2(base.Impl):
Usage:
klugman.py [options] streams [<args>...]
klugman.py num-streams [<args>...] [options]
klugman.py events [<args>...] [options]
klugman.py [options] archives [<args>...]
Options:
@ -74,5 +75,6 @@ Options:
def __init__(self, base_url, base_args):
cmds = {'streams': v1.Streams(),
'num-streams': v1.NumStreams(),
'events': v1.Events(),
'archives': Archives()}
super(V2, self).__init__(base_url, base_args, cmds, V2.__doc__)

View File

@ -1,6 +1,6 @@
[metadata]
name = klugman
version = 0.1
version = 0.2
author = Dark Secret Software Inc.
author-email = admin@darksecretsoftware.com
summary = StackTach.v3 Client