15849: Moves script to 'tools/' subdir, with some fixes.
authorLucas Di Pentima <ldipentima@veritasgenetics.com>
Tue, 26 Nov 2019 19:46:14 +0000 (16:46 -0300)
committerLucas Di Pentima <ldipentima@veritasgenetics.com>
Tue, 26 Nov 2019 19:46:14 +0000 (16:46 -0300)
* Fixed --vocabulary-file argument requirement check
* Modified API server querying to get stable listings

Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <ldipentima@veritasgenetics.com>

doc/admin/workbench2-vocabulary.html.textile.liquid
tools/vocabulary-migrate/vocabulary-migrate.py [moved from doc/_includes/_vocabulary_migrate_py.liquid with 91% similarity]

index 4ff35c363c0bbe2fddd9da687c5fbbdfcc7806bc..e259f78625711c6462e4be412528e0d9b45b0d1e 100644 (file)
@@ -60,6 +60,8 @@ This script will not run if the vocabulary file has duplicated labels for differ
 
 Please take into account that this script requires admin credentials. It also offers a @--dry-run@ flag that will report what changes are required without applying them, so it can be reviewed by an administrator.
 
+Also, take into consideration that this example script does case-sensitive matching on labels.
+
 {% codeblock as python %}
 {% include 'vocabulary_migrate_py' %}
 {% endcodeblock %}
\ No newline at end of file
similarity index 91%
rename from doc/_includes/_vocabulary_migrate_py.liquid
rename to tools/vocabulary-migrate/vocabulary-migrate.py
index 3bccf6108347e63c2cadae07b715b7957439bdc5..c2b9da63b7ccf47729a1818423f6ffdf6b53aa22 100644 (file)
@@ -1,9 +1,8 @@
 #!/usr/bin/env python
-{% comment %}
-Copyright (C) The Arvados Authors. All rights reserved.
-
-SPDX-License-Identifier: CC-BY-SA-3.0
-{% endcomment %}
+#
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: CC-BY-SA-3.0
 
 import argparse
 import copy
@@ -23,7 +22,7 @@ class VocabularyError(Exception):
 
 opts = argparse.ArgumentParser(add_help=False)
 opts.add_argument('--vocabulary-file', type=str, metavar='PATH', default=None,
-                  help="""
+                  required=True, help="""
 Use vocabulary definition file at PATH for migration decisions.
 """)
 opts.add_argument('--dry-run', action='store_true', default=False,
@@ -43,9 +42,7 @@ def parse_arguments(arguments):
     args = arg_parser.parse_args(arguments)
     if args.debug:
         logger.setLevel(logging.DEBUG)
-    if args.vocabulary_file is None:
-        arg_parser.error('Please specify the vocabulary file with --vocabulary-file')
-    elif not os.path.isfile(args.vocabulary_file):
+    if not os.path.isfile(args.vocabulary_file):
         arg_parser.error("{} doesn't exist or isn't a file.".format(args.vocabulary_file))
     return args
 
@@ -96,6 +93,7 @@ def main(arguments=None):
         for resource in [arv.collections(), arv.groups()]:
             objs = arvados.util.list_all(
                 resource.list,
+                order=['created_at'],
                 select=['uuid', 'properties'],
                 filters=[['properties', 'exists', key_label]]
             )