in utils/usergrid-util-python/usergrid_tools/migration/usergrid_data_migrator.py [0:0]
def parse_args():
parser = argparse.ArgumentParser(description='Usergrid Org/App Migrator')
parser.add_argument('--log_dir',
help='path to the place where logs will be written',
default='./',
type=str,
required=False)
parser.add_argument('--log_level',
help='log level - DEBUG, INFO, WARN, ERROR, CRITICAL',
default='INFO',
type=str,
required=False)
parser.add_argument('-o', '--org',
help='Name of the org to migrate',
type=str,
required=True)
parser.add_argument('-a', '--app',
help='Name of one or more apps to include, specify none to include all apps',
required=False,
action='append')
parser.add_argument('-e', '--include_edge',
help='Name of one or more edges/connection types to INCLUDE, specify none to include all edges',
required=False,
action='append')
parser.add_argument('--exclude_edge',
help='Name of one or more edges/connection types to EXCLUDE, specify none to include all edges',
required=False,
action='append')
parser.add_argument('--exclude_collection',
help='Name of one or more collections to EXCLUDE, specify none to include all collections',
required=False,
action='append')
parser.add_argument('-c', '--collection',
help='Name of one or more collections to include, specify none to include all collections',
default=[],
action='append')
parser.add_argument('--force_app',
help='Necessary for using 2.0 as a source at times due to API issues. Forces the specified app(s) to be processed, even if they are not returned from the list of apps in the API call',
default=[],
action='append')
parser.add_argument('--use_name_for_collection',
help='Name of one or more collections to use [name] instead of [uuid] for creating entities and edges',
default=[],
action='append')
parser.add_argument('-m', '--migrate',
help='Specifies what to migrate: data, connections, credentials, audit or none (just iterate '
'the apps/collections)',
type=str,
choices=[
'data',
'prune',
'none',
'reput',
'credentials',
'graph',
'permissions'
],
default='data')
parser.add_argument('-s', '--source_config',
help='The path to the source endpoint/org configuration file',
type=str,
default='source.json')
parser.add_argument('-d', '--target_config',
help='The path to the target endpoint/org configuration file',
type=str,
default='destination.json')
parser.add_argument('--redis_socket',
help='The path to the socket for redis to use',
type=str)
parser.add_argument('--limit',
help='The number of entities to return per query request',
type=int,
default=100)
parser.add_argument('-w', '--entity_workers',
help='The number of worker processes to do the migration',
type=int,
default=16)
parser.add_argument('--visit_cache_ttl',
help='The TTL of the cache of visiting nodes in the graph for connections',
type=int,
default=3600 * 2)
parser.add_argument('--error_retry_sleep',
help='The number of seconds to wait between retrieving after an error',
type=float,
default=30)
parser.add_argument('--page_sleep_time',
help='The number of seconds to wait between retrieving pages from the UsergridQueryIterator',
type=float,
default=0)
parser.add_argument('--entity_sleep_time',
help='The number of seconds to wait between retrieving pages from the UsergridQueryIterator',
type=float,
default=0)
parser.add_argument('--collection_workers',
help='The number of worker processes to do the migration',
type=int,
default=2)
parser.add_argument('--queue_size_max',
help='The max size of entities to allow in the queue',
type=int,
default=100000)
parser.add_argument('--graph_depth',
help='The graph depth to traverse to copy',
type=int,
default=3)
parser.add_argument('--queue_watermark_high',
help='The point at which publishing to the queue will PAUSE until it is at or below low watermark',
type=int,
default=25000)
parser.add_argument('--min_modified',
help='Break when encountering a modified date before this, per collection',
type=int,
default=0)
parser.add_argument('--max_modified',
help='Break when encountering a modified date after this, per collection',
type=long,
default=3793805526000)
parser.add_argument('--queue_watermark_low',
help='The point at which publishing to the queue will RESUME after it has reached the high watermark',
type=int,
default=5000)
parser.add_argument('--ql',
help='The QL to use in the filter for reading data from collections',
type=str,
default='select * order by created asc')
# default='select * order by created asc')
parser.add_argument('--repair_data',
help='Repair data when iterating/migrating graph but skipping data',
action='store_true')
parser.add_argument('--prune',
help='Prune the graph while processing (instead of the prune operation)',
action='store_true')
parser.add_argument('--skip_data',
help='Skip migrating data (useful for connections only)',
action='store_true')
parser.add_argument('--skip_credentials',
help='Skip migrating credentials',
action='store_true')
parser.add_argument('--skip_cache_read',
help='Skip reading the cache (modified timestamps and graph edges)',
dest='skip_cache_read',
action='store_true')
parser.add_argument('--skip_cache_write',
help='Skip updating the cache with modified timestamps of entities and graph edges',
dest='skip_cache_write',
action='store_true')
parser.add_argument('--create_apps',
help='Create apps at the target if they do not exist',
dest='create_apps',
action='store_true')
parser.add_argument('--nohup',
help='specifies not to use stdout for logging',
action='store_true')
parser.add_argument('--graph',
help='Use GRAPH instead of Query',
dest='graph',
action='store_true')
parser.add_argument('--su_username',
help='Superuser username',
required=False,
type=str)
parser.add_argument('--su_password',
help='Superuser Password',
required=False,
type=str)
parser.add_argument('--inbound_connections',
help='Name of the org to migrate',
action='store_true')
parser.add_argument('--map_app',
help="Multiple allowed: A colon-separated string such as 'apples:oranges' which indicates to"
" put data from the app named 'apples' from the source endpoint into app named 'oranges' "
"in the target endpoint",
default=[],
action='append')
parser.add_argument('--map_collection',
help="One or more colon-separated string such as 'cats:dogs' which indicates to put data from "
"collections named 'cats' from the source endpoint into a collection named 'dogs' in the "
"target endpoint, applicable globally to all apps",
default=[],
action='append')
parser.add_argument('--map_org',
help="One or more colon-separated strings such as 'red:blue' which indicates to put data from "
"org named 'red' from the source endpoint into a collection named 'blue' in the target "
"endpoint",
default=[],
action='append')
my_args = parser.parse_args(sys.argv[1:])
return vars(my_args)