|
- 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. 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", 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,
- help="Starting timestamp (free-form, inclusive)",
- ).completer = self.complete.time
- group.add_argument("-e", "--end", required=True,
- metavar="TIME", type=self.arg_time,
- help="Ending timestamp (free-form, noninclusive)",
- ).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:
- 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))
-
- return 0
|