[ARVADOS] updated: 54837bcae94d30f37f19e4ee436c2bb96bd8f21a
Git user
git at public.curoverse.com
Wed Mar 15 11:03:25 EDT 2017
Summary of changes:
sdk/python/arvados/commands/keepdocker.py | 7 +++++-
sdk/python/tests/test_arv_keepdocker.py | 38 ++++++++++++-------------------
2 files changed, 20 insertions(+), 25 deletions(-)
via 54837bcae94d30f37f19e4ee436c2bb96bd8f21a (commit)
from eabc13f27dfb178069546202bca772f893bac81c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 54837bcae94d30f37f19e4ee436c2bb96bd8f21a
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date: Wed Mar 15 11:03:20 2017 -0400
8567: Add check that admin token is used and ensure that migration links are
created owned by system user. Also fix tests now that arv-keepdocker uses
logging instead of printing directly to sys.stderr.
diff --git a/sdk/python/arvados/commands/keepdocker.py b/sdk/python/arvados/commands/keepdocker.py
index 135edd4..bbec030 100644
--- a/sdk/python/arvados/commands/keepdocker.py
+++ b/sdk/python/arvados/commands/keepdocker.py
@@ -372,6 +372,11 @@ def migrate19():
api_client = arvados.api()
+ user = api_client.users().current().execute()
+ if not user['is_admin']:
+ raise Exception("This command requires an admin token")
+ sys_uuid = user['uuid'][:12] + '000000000000000'
+
images = arvados.commands.keepdocker.list_images_in_arv(api_client, 3)
is_new = lambda img: img['dockerhash'].startswith('sha256:')
@@ -443,7 +448,7 @@ def migrate19():
newcol = CollectionReader(migrated.group(1))
api_client.links().create(body={"link": {
- 'owner_uuid': oldcol.api_response()["owner_uuid"],
+ 'owner_uuid': sys_uuid,
'link_class': arvados.commands.keepdocker._migration_link_class,
'name': arvados.commands.keepdocker._migration_link_name,
'tail_uuid': oldcol.portable_data_hash(),
diff --git a/sdk/python/tests/test_arv_keepdocker.py b/sdk/python/tests/test_arv_keepdocker.py
index 9fcf2f1..e67aacc 100644
--- a/sdk/python/tests/test_arv_keepdocker.py
+++ b/sdk/python/tests/test_arv_keepdocker.py
@@ -10,6 +10,7 @@ import subprocess
import sys
import tempfile
import unittest
+import logging
import arvados.commands.keepdocker as arv_keepdocker
import arvados_testutil as tutil
@@ -21,39 +22,28 @@ class StopTest(Exception):
class ArvKeepdockerTestCase(unittest.TestCase):
- def run_arv_keepdocker(self, args):
+ def run_arv_keepdocker(self, args, err):
sys.argv = ['arv-keepdocker'] + args
- return arv_keepdocker.main()
+ log_handler = logging.StreamHandler(err)
+ arv_keepdocker.logger.addHandler(log_handler)
+ try:
+ return arv_keepdocker.main()
+ finally:
+ arv_keepdocker.logger.removeHandler(log_handler)
def test_unsupported_arg(self):
with self.assertRaises(SystemExit):
- self.run_arv_keepdocker(['-x=unknown'])
+ self.run_arv_keepdocker(['-x=unknown'], sys.stderr)
def test_version_argument(self):
err = io.BytesIO()
out = io.BytesIO()
with tutil.redirected_streams(stdout=out, stderr=err):
with self.assertRaises(SystemExit):
- self.run_arv_keepdocker(['--version'])
+ self.run_arv_keepdocker(['--version'], sys.stderr)
self.assertEqual(out.getvalue(), '')
self.assertRegexpMatches(err.getvalue(), "[0-9]+\.[0-9]+\.[0-9]+")
- def test_migrate19(self):
- try:
- sys.argv = ['arv-migrate-docker19']
-
- added = arv_keepdocker.migrate19()
- self.assertEqual(len(added), 1)
- self.assertEqual(added[0]['link_class'], 'docker_image_migration')
- self.assertEqual(added[0]['name'], 'migrate_1.9_1.10')
- self.assertEqual(added[0]['tail_uuid'], 'fa3c1a9cb6783f85f2ecda037e07b8c3+167')
- self.assertEqual(added[0]['head_uuid'], 'd740a57097711e08eb9b2a93518f20ab+174')
-
- added = arv_keepdocker.migrate19()
- self.assertEqual(added, [])
- finally:
- run_test_server.reset()
-
@mock.patch('arvados.commands.keepdocker.find_image_hashes',
return_value=['abc123'])
@mock.patch('arvados.commands.keepdocker.find_one_image_hash',
@@ -80,7 +70,7 @@ class ArvKeepdockerTestCase(unittest.TestCase):
err = io.BytesIO()
out = io.BytesIO()
- with tutil.redirected_streams(stdout=out, stderr=err), \
+ with tutil.redirected_streams(stdout=out), \
mock.patch('arvados.api') as api, \
mock.patch('arvados.commands.keepdocker.popen_docker',
return_value=subprocess.Popen(
@@ -91,7 +81,7 @@ class ArvKeepdockerTestCase(unittest.TestCase):
self.assertRaises(StopTest if expect_ok else SystemExit):
api()._rootDesc = fakeDD
- self.run_arv_keepdocker(['--force', 'testimage'])
+ self.run_arv_keepdocker(['--force', 'testimage'], err)
self.assertEqual(out.getvalue(), '')
if expect_ok:
@@ -112,7 +102,7 @@ class ArvKeepdockerTestCase(unittest.TestCase):
fakeDD['dockerImageFormats'] = ['v1']
err = io.BytesIO()
out = io.BytesIO()
- with tutil.redirected_streams(stdout=out, stderr=err), \
+ with tutil.redirected_streams(stdout=out), \
mock.patch('arvados.api') as api, \
mock.patch('arvados.commands.keepdocker.popen_docker',
return_value=subprocess.Popen(
@@ -123,5 +113,5 @@ class ArvKeepdockerTestCase(unittest.TestCase):
self.assertRaises(StopTest):
api()._rootDesc = fakeDD
self.run_arv_keepdocker(
- ['--force', '--force-image-format', 'testimage'])
+ ['--force', '--force-image-format', 'testimage'], err)
self.assertRegexpMatches(err.getvalue(), "forcing incompatible image")
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list