"previous: Upgrading to 2.7.1":#v2_7_1
+h3. Configuration entries have been removed or renamed
+
+The following configuration keys have been renamed or removed. Renamed keys will still be loaded if they appear with their old names, but you should update your @/etc/arvados/config.yml@ file to avoid warnings when services start up.
+* @Containers.JobsAPI.Enable@ has been removed
+* @Mail.EmailFrom@ has been removed
+* @Mail.IssueReporterEmailFrom@ has been removed
+* @Mail.IssueReporterEmailTo@ has been removed
+* @Mail.MailchimpAPIKey@ has been removed
+* @Mail.MailchimpListID@ has been removed
+* @Mail.SendUserSetupNotificationEmail@ has moved to @Users.SendUserSetupNotificationEmail@
+* @Mail.SupportEmailAddress@ has moved to @Users.SupportEmailAddress@
+
+ h3. S3 volume IAMRole configuration entry has been removed
+
+ The @Volumes.*.DriverParameters.IAMRole@ configuration entry for S3 volumes has been removed. You should remove it from your @/etc/arvados/config.yml@ file to avoid warnings when services start up. As before, if @AccessKeyID@ and @SecretAccessKey@ are blank, keepstore will retrieve IAM role credentials from instance metadata. Previously, documentation indicated that keepstore would refuse to use the IAM credentials if @IAMRole@ was specified and did not match the instance metadata, but that check has not been working for some time.
+
h3. Legacy container logging system has been removed
The following configuration keys are no longer supported. Remove them from your @/etc/arvados/config.yml@ file to avoid warnings when services start up.
"description": "Include items whose is_trashed attribute is true.",
"location": "query"
},
- "include": {
+ "uuid": {
"type": "string",
"required": false,
+ "default": "",
"description": "",
"location": "query"
- "type": "string",
+ },
+ "recursive": {
+ "type": "boolean",
+ "required": false,
+ "default": "false",
+ "description": "Include contents from child groups recursively.",
+ "location": "query"
+ },
+ "include": {
- "description": "Include objects referred to by listed field in \"included\" (only owner_uuid).",
++ "type": "array",
+ "required": false,
++ "description": "Include objects referred to by listed fields in \"included\" response field. Subsets of [\"owner_uuid\", \"container_uuid\"] are supported.",
+ "location": "query"
+ },
+ "include_old_versions": {
+ "type": "boolean",
+ "required": false,
+ "default": "false",
+ "description": "Include past collection versions.",
+ "location": "query"
}
},
"response": {
"""Regular expression to match any Arvados link UUID"""
user_uuid_pattern = re.compile(r'[a-z0-9]{5}-tpzed-[a-z0-9]{15}')
"""Regular expression to match any Arvados user UUID"""
-job_uuid_pattern = re.compile(r'[a-z0-9]{5}-8i9sb-[a-z0-9]{15}')
-"""Regular expression to match any Arvados job UUID
-
-.. WARNING:: Deprecated
- Arvados job resources are deprecated and will be removed in a future
- release. Prefer the containers API instead.
-"""
+ logger = logging.getLogger('arvados')
+
def _deprecated(version=None, preferred=None):
"""Mark a callable as deprecated in the SDK
import os
import random
import re
+ import shutil
import sys
- import datetime
- import ciso8601
+ import tempfile
import time
import unittest
- import parameterized
+ import parameterized
from unittest import mock
+from . import run_test_server
+from arvados._ranges import Range, LocatorAndRange, locators_and_ranges
++
+ import arvados
+ import arvados.keep
++
from arvados.collection import Collection, CollectionReader
+ from arvados._ranges import Range, LocatorAndRange
+
from . import arvados_testutil as tutil
- from .arvados_testutil import make_block_cache
+ from . import run_test_server
-class TestResumableWriter(arvados.ResumableCollectionWriter):
- KEEP_BLOCK_SIZE = 1024 # PUT to Keep every 1K.
-
- def current_state(self):
- return self.dump_state(copy.deepcopy)
-
-
@parameterized.parameterized_class([{"disk_cache": True}, {"disk_cache": False}])
class ArvadosCollectionsTest(run_test_server.TestCaseWithServers,
tutil.ArvadosBaseTestCase):
cls.api_client = arvados.api('v1')
cls.keep_client = arvados.KeepClient(api_client=cls.api_client,
local_store=cls.local_store,
- block_cache=make_block_cache(cls.disk_cache))
+ block_cache=block_cache)
+
+ @classmethod
+ def tearDownClass(cls):
+ if cls._disk_cache_dir:
+ shutil.rmtree(cls._disk_cache_dir)
def write_foo_bar_baz(self):
- cw = arvados.CollectionWriter(self.api_client)
- self.assertEqual(cw.current_stream_name(), '.',
- 'current_stream_name() should be "." now')
- cw.set_current_file_name('foo.txt')
- cw.write(b'foo')
- self.assertEqual(cw.current_file_name(), 'foo.txt',
- 'current_file_name() should be foo.txt now')
- cw.start_new_file('bar.txt')
- cw.write(b'bar')
- cw.start_new_stream('baz')
- cw.write(b'baz')
- cw.set_current_file_name('baz.txt')
- self.assertEqual(cw.manifest_text(),
- ". 3858f62230ac3c915f300c664312c63f+6 0:3:foo.txt 3:3:bar.txt\n" +
- "./baz 73feffa4b7f6bb68e44cf984c85f6e88+3 0:3:baz.txt\n",
- "wrong manifest: got {}".format(cw.manifest_text()))
+ with arvados.collection.Collection(api_client=self.api_client).open('zzz', 'wb') as f:
+ f.write(b'foobar')
+ f.flush()
+ f.write(b'baz')
+ cw = arvados.collection.Collection(
+ api_client=self.api_client,
+ manifest_locator_or_text=
+ ". 3858f62230ac3c915f300c664312c63f+6 0:3:foo.txt 3:3:bar.txt\n" +
+ "./baz 73feffa4b7f6bb68e44cf984c85f6e88+3 0:3:baz.txt\n")
cw.save_new()
return cw.portable_data_hash()