Merge "Add support for events to v1"
This commit is contained in:
commit
6db1bdc111
42
README.md
42
README.md
@ -124,5 +124,45 @@ $ klugman streams --older_than 01-31-2015T13:30
|
|||||||
$ klugman streams --older_than 01-31-2015T13:30 --state completed
|
$ 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"
|
||||||
|
|
||||||
|
```
|
||||||
|
@ -27,7 +27,8 @@ def dump_response(keys, rows):
|
|||||||
for row in rows:
|
for row in rows:
|
||||||
x = prettytable.PrettyTable(["Property", "Value"])
|
x = prettytable.PrettyTable(["Property", "Value"])
|
||||||
for key in keys:
|
for key in keys:
|
||||||
x.add_row([key, row.get(key)])
|
if key in row:
|
||||||
|
x.add_row([key, row[key]])
|
||||||
print x
|
print x
|
||||||
|
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ import v1
|
|||||||
import v2
|
import v2
|
||||||
|
|
||||||
versions = {1: v1.V1, 2: v2.V2}
|
versions = {1: v1.V1, 2: v2.V2}
|
||||||
latest = 2
|
latest = 1
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
|
@ -191,15 +191,73 @@ class NumStreams(object):
|
|||||||
return base.get(version.base_url, cmd, params)
|
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):
|
class V1(base.Impl):
|
||||||
"""usage:
|
"""usage:
|
||||||
klugman.py streams [<args>...] [options]
|
klugman.py streams [<args>...] [options]
|
||||||
klugman.py num-streams [<args>...] [options]
|
klugman.py num-streams [<args>...] [options]
|
||||||
|
klugman.py events [<args>...] [options]
|
||||||
|
|
||||||
-h, --help show command options
|
-h, --help show command options
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, base_url, base_args):
|
def __init__(self, base_url, base_args):
|
||||||
cmds = {'streams': Streams(),
|
cmds = {'streams': Streams(),
|
||||||
'num-streams': NumStreams()}
|
'num-streams': NumStreams(),
|
||||||
|
'events': Events()}
|
||||||
super(V1, self).__init__(base_url, base_args, cmds, V1.__doc__)
|
super(V1, self).__init__(base_url, base_args, cmds, V1.__doc__)
|
||||||
|
@ -65,6 +65,7 @@ class V2(base.Impl):
|
|||||||
Usage:
|
Usage:
|
||||||
klugman.py [options] streams [<args>...]
|
klugman.py [options] streams [<args>...]
|
||||||
klugman.py num-streams [<args>...] [options]
|
klugman.py num-streams [<args>...] [options]
|
||||||
|
klugman.py events [<args>...] [options]
|
||||||
klugman.py [options] archives [<args>...]
|
klugman.py [options] archives [<args>...]
|
||||||
|
|
||||||
Options:
|
Options:
|
||||||
@ -74,5 +75,6 @@ Options:
|
|||||||
def __init__(self, base_url, base_args):
|
def __init__(self, base_url, base_args):
|
||||||
cmds = {'streams': v1.Streams(),
|
cmds = {'streams': v1.Streams(),
|
||||||
'num-streams': v1.NumStreams(),
|
'num-streams': v1.NumStreams(),
|
||||||
|
'events': v1.Events(),
|
||||||
'archives': Archives()}
|
'archives': Archives()}
|
||||||
super(V2, self).__init__(base_url, base_args, cmds, V2.__doc__)
|
super(V2, self).__init__(base_url, base_args, cmds, V2.__doc__)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
[metadata]
|
[metadata]
|
||||||
name = klugman
|
name = klugman
|
||||||
version = 0.1
|
version = 0.2
|
||||||
author = Dark Secret Software Inc.
|
author = Dark Secret Software Inc.
|
||||||
author-email = admin@darksecretsoftware.com
|
author-email = admin@darksecretsoftware.com
|
||||||
summary = StackTach.v3 Client
|
summary = StackTach.v3 Client
|
||||||
|
Loading…
x
Reference in New Issue
Block a user