|
|
@@ -20,6 +20,9 @@ import argparse |
|
|
|
import numpy as np |
|
|
|
import cStringIO |
|
|
|
|
|
|
|
class ArgumentError(Exception): |
|
|
|
pass |
|
|
|
|
|
|
|
class MissingDestination(Exception): |
|
|
|
def __init__(self, args, src, dest): |
|
|
|
self.parsed_args = args |
|
|
@@ -139,43 +142,50 @@ class Filter(object): |
|
|
|
timestamp_to_human(interval.start), |
|
|
|
timestamp_to_human(interval.end)) |
|
|
|
|
|
|
|
def parse_args(self, argv = None): |
|
|
|
args = self._parser.parse_args(argv) |
|
|
|
|
|
|
|
if args.dest_url is None: |
|
|
|
args.dest_url = args.url |
|
|
|
if args.url != args.dest_url: |
|
|
|
def set_args(self, url, dest_url, srcpath, destpath, start, end, |
|
|
|
parsed_args = None, quiet = True): |
|
|
|
"""Set arguments directly from parameters""" |
|
|
|
if dest_url is None: |
|
|
|
dest_url = url |
|
|
|
if url != dest_url: |
|
|
|
self.interhost = True |
|
|
|
|
|
|
|
self._client_src = Client(args.url) |
|
|
|
self._client_dest = Client(args.dest_url) |
|
|
|
self._client_src = Client(url) |
|
|
|
self._client_dest = Client(dest_url) |
|
|
|
|
|
|
|
if (not self.interhost) and (args.srcpath == args.destpath): |
|
|
|
self._parser.error("source and destination path must be different") |
|
|
|
if (not self.interhost) and (srcpath == destpath): |
|
|
|
raise ArgumentError("source and destination path must be different") |
|
|
|
|
|
|
|
# Open and print info about the streams |
|
|
|
self.src = get_stream_info(self._client_src, args.srcpath) |
|
|
|
# Open the streams |
|
|
|
self.src = get_stream_info(self._client_src, srcpath) |
|
|
|
if not self.src: |
|
|
|
self._parser.error("source path " + args.srcpath + " not found") |
|
|
|
raise ArgumentError("source path " + srcpath + " not found") |
|
|
|
|
|
|
|
self.dest = get_stream_info(self._client_dest, args.destpath) |
|
|
|
self.dest = get_stream_info(self._client_dest, destpath) |
|
|
|
if not self.dest: |
|
|
|
raise MissingDestination(args, self.src, |
|
|
|
StreamInfo(args.dest_url, [args.destpath])) |
|
|
|
raise MissingDestination(parsed_args, self.src, |
|
|
|
StreamInfo(dest_url, [destpath])) |
|
|
|
|
|
|
|
self.start = start |
|
|
|
self.end = end |
|
|
|
|
|
|
|
# Print info |
|
|
|
if not quiet: |
|
|
|
print "Source:", self.src.string(self.interhost) |
|
|
|
print " Dest:", self.dest.string(self.interhost) |
|
|
|
|
|
|
|
def parse_args(self, argv = None): |
|
|
|
"""Parse arguments from a command line""" |
|
|
|
args = self._parser.parse_args(argv) |
|
|
|
|
|
|
|
print "Source:", self.src.string(self.interhost) |
|
|
|
print " Dest:", self.dest.string(self.interhost) |
|
|
|
self.set_args(args.url, args.dest_url, args.srcpath, args.destpath, |
|
|
|
args.start, args.end, quiet = False, parsed_args = args) |
|
|
|
|
|
|
|
self.force_metadata = args.force_metadata |
|
|
|
if args.dry_run: |
|
|
|
for interval in self.intervals(): |
|
|
|
print self.interval_string(interval) |
|
|
|
raise SystemExit(0) |
|
|
|
|
|
|
|
self.force_metadata = args.force_metadata |
|
|
|
|
|
|
|
self.start = args.start |
|
|
|
self.end = args.end |
|
|
|
|
|
|
|
return args |
|
|
|
|
|
|
|
def _optimize_int(self, it): |
|
|
|