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.
 
 
 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
 {% 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
 #!/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
 
 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,
 
 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,
 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)
     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
 
         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,
         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]]
             )
                 select=['uuid', 'properties'],
                 filters=[['properties', 'exists', key_label]]
             )