|
|
@@ -1,17 +1,19 @@ |
|
|
|
from nilmdb.utils.printf import * |
|
|
|
import nilmdb.client |
|
|
|
import fnmatch |
|
|
|
|
|
|
|
def setup(self, sub): |
|
|
|
cmd = sub.add_parser("remove", help="Remove data", |
|
|
|
description=""" |
|
|
|
Remove all data from a specified time range within a |
|
|
|
stream. |
|
|
|
stream. If multiple streams or wildcards are provided, |
|
|
|
the same time range is removed from all streams. |
|
|
|
""") |
|
|
|
cmd.set_defaults(handler = cmd_remove) |
|
|
|
|
|
|
|
group = cmd.add_argument_group("Data selection") |
|
|
|
group.add_argument("path", |
|
|
|
help="Path of stream, e.g. /foo/bar", |
|
|
|
group.add_argument("path", nargs='+', |
|
|
|
help="Path of stream, e.g. /foo/bar/*", |
|
|
|
).completer = self.complete.path |
|
|
|
group.add_argument("-s", "--start", required=True, |
|
|
|
metavar="TIME", type=self.arg_time, |
|
|
@@ -23,18 +25,31 @@ def setup(self, sub): |
|
|
|
).completer = self.complete.time |
|
|
|
|
|
|
|
group = cmd.add_argument_group("Output format") |
|
|
|
group.add_argument("-q", "--quiet", action="store_true", |
|
|
|
help="Don't display names when removing " |
|
|
|
"from multiple paths") |
|
|
|
group.add_argument("-c", "--count", action="store_true", |
|
|
|
help="Output number of data points removed") |
|
|
|
return cmd |
|
|
|
|
|
|
|
def cmd_remove(self): |
|
|
|
streams = [ s[0] for s in self.client.stream_list() ] |
|
|
|
paths = [] |
|
|
|
for path in self.args.path: |
|
|
|
new = fnmatch.filter(streams, path) |
|
|
|
if not new: |
|
|
|
self.die("error: no stream matched path: %s", path) |
|
|
|
paths.extend(new) |
|
|
|
|
|
|
|
try: |
|
|
|
count = self.client.stream_remove(self.args.path, |
|
|
|
self.args.start, self.args.end) |
|
|
|
for path in paths: |
|
|
|
if not self.args.quiet and len(paths) > 1: |
|
|
|
printf("Removing from %s\n", path) |
|
|
|
count = self.client.stream_remove(path, |
|
|
|
self.args.start, self.args.end) |
|
|
|
if self.args.count: |
|
|
|
printf("%d\n", count); |
|
|
|
except nilmdb.client.ClientError as e: |
|
|
|
self.die("error removing data: %s", str(e)) |
|
|
|
|
|
|
|
if self.args.count: |
|
|
|
printf("%d\n", count) |
|
|
|
|
|
|
|
return 0 |