Merge branch '15640-cwl-test-mem' refs #15640
authorPeter Amstutz <pamstutz@veritasgenetics.com>
Tue, 1 Oct 2019 20:30:52 +0000 (16:30 -0400)
committerPeter Amstutz <pamstutz@veritasgenetics.com>
Tue, 1 Oct 2019 20:30:52 +0000 (16:30 -0400)
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <pamstutz@veritasgenetics.com>

18 files changed:
apps/workbench/Gemfile
apps/workbench/Gemfile.lock
doc/api/methods/containers.html.textile.liquid
sdk/cli/arvados-cli.gemspec
sdk/cli/test/test_arv-collection-create.rb
sdk/cli/test/test_arv-get.rb
sdk/cli/test/test_arv-keep-get.rb
sdk/cli/test/test_arv-keep-put.rb
sdk/cli/test/test_arv-tag.rb
sdk/cli/test/test_arv-ws.rb
sdk/ruby/arvados.gemspec
services/api/app/models/container.rb
services/api/test/unit/container_test.rb
services/keepstore/azure_blob_volume.go
services/login-sync/Gemfile.lock
services/login-sync/arvados-login-sync.gemspec
tools/arvbox/lib/arvbox/docker/service/composer/run-service
tools/arvbox/lib/arvbox/docker/service/workbench2/run-service

index ce2a1377d72a3f9f6bbbc3cf92243921eff137cf..bc62407bc5173fa77b63daaa7f6f58882c29be33 100644 (file)
@@ -90,9 +90,6 @@ gem 'sshkey'
 # Deploy with Capistrano
 # gem 'capistrano'
 
-# To use debugger
-#gem 'byebug'
-
 gem 'passenger', :group => :production
 gem 'andand'
 gem 'RedCloth'
index 548da1dc049bf32a2abc886e2c451f2b5b1927ab..449f997b5337ec973c1e4c80417e88685ff190c3 100644 (file)
@@ -53,12 +53,12 @@ GEM
       i18n (>= 0.7, < 2)
       minitest (~> 5.1)
       tzinfo (~> 1.1)
-    addressable (2.6.0)
-      public_suffix (>= 2.0.2, < 4.0)
+    addressable (2.7.0)
+      public_suffix (>= 2.0.2, < 5.0)
     andand (1.3.3)
     angularjs-rails (1.3.15)
     arel (7.1.4)
-    arvados (1.3.1.20190320201707)
+    arvados (1.3.3.20190320201707)
       activesupport (>= 3)
       andand (~> 1.3, >= 1.3.3)
       arvados-google-api-client (>= 0.7, < 0.8.9)
@@ -127,7 +127,7 @@ GEM
     flamegraph (0.9.5)
     globalid (0.4.2)
       activesupport (>= 4.2.0)
-    googleauth (0.8.1)
+    googleauth (0.9.0)
       faraday (~> 0.12)
       jwt (>= 1.4, < 3.0)
       memoist (~> 0.16)
@@ -153,7 +153,7 @@ GEM
       actionpack (>= 4)
       less (~> 2.6.0)
       sprockets (>= 2)
-    libv8 (3.16.14.19)
+    libv8 (3.16.14.19-x86_64-linux)
     lograge (0.10.0)
       actionpack (>= 4)
       activesupport (>= 4)
@@ -179,7 +179,7 @@ GEM
     morrisjs-rails (0.5.1.2)
       railties (> 3.1, < 6)
     multi_json (1.13.1)
-    multipart-post (2.0.0)
+    multipart-post (2.1.1)
     net-scp (2.0.0)
       net-ssh (>= 2.6.5, < 6.0.0)
     net-sftp (2.1.2)
@@ -192,8 +192,8 @@ GEM
       mini_portile2 (~> 2.4.0)
     npm-rails (0.2.1)
       rails (>= 3.2)
-    oj (3.7.11)
-    os (1.0.0)
+    oj (3.7.12)
+    os (1.0.1)
     passenger (6.0.2)
       rack
       rake (>= 0.8.1)
@@ -206,7 +206,7 @@ GEM
       cliver (~> 0.3.1)
       multi_json (~> 1.0)
       websocket-driver (>= 0.2.0)
-    public_suffix (3.0.3)
+    public_suffix (4.0.1)
     rack (2.0.7)
     rack-mini-profiler (1.0.2)
       rack (>= 1.2.0)
index d59c66edc3cbf5f492dbb0c4befac668e209c980..5ec95cee62ab18a7f8b69ac42382a4f42e7ac1cd 100644 (file)
@@ -110,7 +110,9 @@ table(table table-bordered table-condensed).
 
 h3. delete
 
-Delete an existing Container.
+Delete a Container.
+
+This API requires admin privileges. In normal operation, it should not be used at all. API clients like Workbench might not work correctly when a container request references a container that has been deleted.
 
 Arguments:
 
index bce7ce5f5cb7a55a083f68bc29d6a88008a03fef..f828e92bd6ede4f719d1c6c963b80a57905d6b5b 100644 (file)
@@ -36,6 +36,8 @@ Gem::Specification.new do |s|
   s.add_runtime_dependency 'andand', '~> 1.3', '>= 1.3.3'
   s.add_runtime_dependency 'oj', '~> 3.0'
   s.add_runtime_dependency 'curb', '~> 0.8'
+  # arvados-google-api-client 0.8.7.2 is incompatible with faraday 0.16.2
+  s.add_dependency('faraday', '< 0.16')
   s.homepage    =
     'https://arvados.org'
 end
index 237b2107f85f2607509893906052b72c965d8d32..39c50bcc837653d975e308a3ae9b567aa759a12b 100644 (file)
@@ -20,7 +20,7 @@ class TestCollectionCreate < Minitest::Test
                    manifest_text: foo_manifest
                  }.to_json)
     end
-    assert /^([0-9a-z]{5}-4zz18-[0-9a-z]{15})?$/.match(out)
+    assert(/^([0-9a-z]{5}-4zz18-[0-9a-z]{15})?$/.match(out))
     assert_equal '', err
   end
 
@@ -33,7 +33,7 @@ class TestCollectionCreate < Minitest::Test
         assert_arv('--format', 'uuid',
                    'collection', 'create', '--collection', tempfile.path)
       end
-      assert /^([0-9a-z]{5}-4zz18-[0-9a-z]{15})?$/.match(out)
+      assert(/^([0-9a-z]{5}-4zz18-[0-9a-z]{15})?$/.match(out))
       assert_equal '', err
     ensure
       tempfile.unlink
index c5ddacb7e011af44afa040377e2a0081eb074862..3a00fec94a6d585a0231d863a6f8c755d292dfff 100644 (file)
@@ -148,9 +148,9 @@ class TestArvGet < Minitest::Test
   def create_arv_object_with_value(value)
     out, err = capture_subprocess_io do
       system("arv", "tag", "add", value, "--object", "testing")
-      assert $?.success?, "Command failure running `arv tag`: #{$?}"
     end
     assert_equal '', err
+    assert $?.success?, "Command failure running `arv tag`: #{$?}"
     assert_operator 0, :<, out.strip.length
     out.strip
   end
index 2aa1e67248f2d01258a8241edd176d9aa9929425..f92e51b298c65c4dbebd04bf8b36903c18a25861 100644 (file)
@@ -21,7 +21,7 @@ class TestArvKeepGet < Minitest::Test
       assert_arv_get false
     end
     assert_equal '', out
-    assert_match /^usage:/, err
+    assert_match(/^usage:/, err)
   end
 
   def test_get_version
@@ -38,7 +38,7 @@ class TestArvKeepGet < Minitest::Test
     end
     $stderr.write err
     assert_equal '', err
-    assert_match /^usage:/, out
+    assert_match(/^usage:/, out)
   end
 
   def test_file_to_dev_stdout
@@ -70,7 +70,7 @@ class TestArvKeepGet < Minitest::Test
     out, err = capture_subprocess_io do
       assert_arv_get false, @@foo_manifest_locator + '/foo', 'tmp/foo'
     end
-    assert_match /Local file tmp\/foo already exists/, err
+    assert_match(/Local file tmp\/foo already exists/, err)
     assert_equal '', out
     assert_equal 'baz', IO.read('tmp/foo')
   end
@@ -82,7 +82,7 @@ class TestArvKeepGet < Minitest::Test
     out, err = capture_subprocess_io do
       assert_arv_get false, @@foo_manifest_locator + '/', 'tmp/'
     end
-    assert_match /Local file tmp\/foo already exists/, err
+    assert_match(/Local file tmp\/foo already exists/, err)
     assert_equal '', out
     assert_equal 'baz', IO.read('tmp/foo')
   end
@@ -128,7 +128,7 @@ class TestArvKeepGet < Minitest::Test
       assert_arv_get false, @@foo_manifest_locator + '/', 'tmp/foo'
     end
     assert_equal '', out
-    assert_match /^usage:/, err
+    assert_match(/^usage:/, err)
   end
 
   def test_dir_to_empty_string
@@ -136,7 +136,7 @@ class TestArvKeepGet < Minitest::Test
       assert_arv_get false, @@foo_manifest_locator + '/', ''
     end
     assert_equal '', out
-    assert_match /^usage:/, err
+    assert_match(/^usage:/, err)
   end
 
   def test_nonexistent_block
@@ -144,7 +144,7 @@ class TestArvKeepGet < Minitest::Test
       assert_arv_get false, 'e796ab2294f3e48ec709ffa8d6daf58c'
     end
     assert_equal '', out
-    assert_match /ERROR:/, err
+    assert_match(/ERROR:/, err)
   end
 
   def test_nonexistent_manifest
@@ -152,7 +152,7 @@ class TestArvKeepGet < Minitest::Test
       assert_arv_get false, 'acbd18db4cc2f85cedef654fccc4a4d8/', 'tmp/'
     end
     assert_equal '', out
-    assert_match /ERROR:/, err
+    assert_match(/ERROR:/, err)
   end
 
   def test_manifest_root_to_dir
index 9ac722f6733dff2d5991ea8670ee420b316f0bbe..9fec78e34973f831dcd55dadb335c54a541615ed 100644 (file)
@@ -22,7 +22,7 @@ class TestArvKeepPut < Minitest::Test
     end
     $stderr.write err
     assert_empty err
-    assert_match /^usage:/, out
+    assert_match(/^usage:/, out)
   end
 
   def test_raw_stdin
@@ -65,7 +65,7 @@ class TestArvKeepPut < Minitest::Test
       assert_equal(false, arv_put('--filename', 'foo', './tmp/empty_dir/.'),
                    'arv-put --filename refuses directory')
     end
-    assert_match /^usage:.*error:/m, err
+    assert_match(/^usage:.*error:/m, err)
     assert_empty out
   end
 
@@ -76,7 +76,7 @@ class TestArvKeepPut < Minitest::Test
                                   './tmp/empty_file'),
                    'arv-put --filename refuses directory')
     end
-    assert_match /^usage:.*error:/m, err
+    assert_match(/^usage:.*error:/m, err)
     assert_empty out
   end
 
@@ -102,7 +102,7 @@ class TestArvKeepPut < Minitest::Test
     out, err = capture_subprocess_io do
       assert arv_put('--no-cache', '--manifest', '--progress', './tmp/foo')
     end
-    assert_match /%/, err
+    assert_match(/%/, err)
     assert match_collection_uuid(out)
   end
 
@@ -110,8 +110,8 @@ class TestArvKeepPut < Minitest::Test
     out, err = capture_subprocess_io do
       assert arv_put('--no-cache', '--manifest', '--batch-progress', './tmp/foo')
     end
-    assert_match /: 0 written 3 total/, err
-    assert_match /: 3 written 3 total/, err
+    assert_match(/: 0 written 3 total/, err)
+    assert_match(/: 3 written 3 total/, err)
     assert match_collection_uuid(out)
   end
 
@@ -121,7 +121,7 @@ class TestArvKeepPut < Minitest::Test
                    arv_put('--progress', '--batch-progress', './tmp/foo'),
                    'arv-put --progress --batch-progress is contradictory')
     end
-    assert_match /^usage:.*error:/m, err
+    assert_match(/^usage:.*error:/m, err)
     assert_empty out
   end
 
index 16542ba16b4fbb649722bc7de1a2388e30225188..895d0559e541b7da526c0cdd7961f4a09e737b30 100644 (file)
@@ -20,7 +20,7 @@ class TestArvTag < Minitest::Test
       assert_equal false, arv_tag
     end
     assert_empty out
-    assert_match /^usage:/i, err
+    assert_match(/^usage:/i, err)
   end
 
   # Test adding and removing a single tag on a single object.
index ffdb8656b41259362009c256d91c0661a9855d0d..49aac8a640206532259acb577b9f8a4751be24b0 100644 (file)
@@ -9,14 +9,14 @@ class TestArvWs < Minitest::Test
   end
 
   def test_arv_ws_get_help
-    out, err = capture_subprocess_io do
+    _, err = capture_subprocess_io do
       system ('arv-ws -h')
     end
     assert_equal '', err
   end
 
   def test_arv_ws_such_option
-    out, err = capture_subprocess_io do
+    _, err = capture_subprocess_io do
       system ('arv-ws --junk')
     end
     refute_equal '', err
index d4f04eb370659fac2ade716e302a301ea7494577..ef189bb7ac49fd7af7bad9fd313cf3ce942d5ff0 100644 (file)
@@ -33,6 +33,8 @@ Gem::Specification.new do |s|
   # work around undeclared dependency on i18n in some activesupport 3.x.x:
   s.add_dependency('i18n', '~> 0')
   s.add_dependency('json', '>= 1.7.7', '<3')
+  # arvados-google-api-client 0.8.7.2 is incompatible with faraday 0.16.2
+  s.add_dependency('faraday', '< 0.16')
   s.add_runtime_dependency('jwt', '<2', '>= 0.1.5')
   s.homepage    =
     'https://arvados.org'
index 8999b3e14e123b78f8ecfaaa2ea821d8fa6e3490..376be55ffbf1a762ae81c2ed3fbbf76292b87883 100644 (file)
@@ -423,6 +423,10 @@ class Container < ArvadosModel
     current_user.andand.is_admin
   end
 
+  def permission_to_destroy
+    current_user.andand.is_admin
+  end
+
   def ensure_owner_uuid_is_permitted
     # validate_change ensures owner_uuid can't be changed at all --
     # except during create, which requires admin privileges. Checking
index 88fd5feb6ad27c3c55dd5531c0a2566422239f41..5f17efc4452c3ac24e5e53f9d532da1ce3b9d673 100644 (file)
@@ -980,6 +980,15 @@ class ContainerTest < ActiveSupport::TestCase
     end
   end
 
+  test "user cannot delete" do
+    set_user_from_auth :active
+    c, _ = minimal_new
+    assert_raises ArvadosModel::PermissionDeniedError do
+      c.destroy
+    end
+    assert Container.find_by_uuid(c.uuid)
+  end
+
   [
     {state: Container::Complete, exit_code: 0, output: '1f4b0bc7583c2a7f9102c395f4ffc5e3+45'},
     {state: Container::Cancelled},
index 6806c8c6ce4ffa2b5c93dde2ca54f5d7e7754872..50a8edcbb7090728f22cdd576267dae9133e81db 100644 (file)
@@ -34,7 +34,6 @@ func init() {
 
 func newAzureBlobVolume(cluster *arvados.Cluster, volume arvados.Volume, logger logrus.FieldLogger, metrics *volumeMetricsVecs) (Volume, error) {
        v := &AzureBlobVolume{
-               StorageBaseURL:    storage.DefaultBaseURL,
                RequestTimeout:    azureDefaultRequestTimeout,
                WriteRaceInterval: azureDefaultWriteRaceInterval,
                WriteRacePollTime: azureDefaultWriteRacePollTime,
@@ -53,6 +52,9 @@ func newAzureBlobVolume(cluster *arvados.Cluster, volume arvados.Volume, logger
        if v.ListBlobsMaxAttempts == 0 {
                v.ListBlobsMaxAttempts = azureDefaultListBlobsMaxAttempts
        }
+       if v.StorageBaseURL == "" {
+               v.StorageBaseURL = storage.DefaultBaseURL
+       }
        if v.ContainerName == "" || v.StorageAccountName == "" || v.StorageAccountKey == "" {
                return nil, errors.New("DriverParameters: ContainerName, StorageAccountName, and StorageAccountKey must be provided")
        }
index 70b666af8460a6ca7731d590cf6e8bf77a4af31a..5f163e87c32188e04ac4a05573ad9d922f185a07 100644 (file)
@@ -1,8 +1,9 @@
 PATH
   remote: .
   specs:
-    arvados-login-sync (1.4.0.20190729193732)
+    arvados-login-sync (1.4.1.20190930204434)
       arvados (~> 1.3.0, >= 1.3.0)
+      faraday (< 0.16)
 
 GEM
   remote: https://rubygems.org/
@@ -12,8 +13,8 @@ GEM
       i18n (>= 0.7, < 2)
       minitest (~> 5.1)
       tzinfo (~> 1.1)
-    addressable (2.6.0)
-      public_suffix (>= 2.0.2, < 4.0)
+    addressable (2.7.0)
+      public_suffix (>= 2.0.2, < 5.0)
     andand (1.3.3)
     arvados (1.3.3.20190320201707)
       activesupport (>= 3)
@@ -41,7 +42,7 @@ GEM
     extlib (0.9.16)
     faraday (0.15.4)
       multipart-post (>= 1.2, < 3)
-    googleauth (0.8.1)
+    googleauth (0.9.0)
       faraday (~> 0.12)
       jwt (>= 1.4, < 3.0)
       memoist (~> 0.16)
@@ -62,7 +63,7 @@ GEM
     multi_json (1.13.1)
     multipart-post (2.1.1)
     os (1.0.1)
-    public_suffix (3.1.1)
+    public_suffix (4.0.1)
     rake (12.3.2)
     retriable (1.4.1)
     signet (0.11.0)
index f998a8f35211c89ae81dd89def87d5aef9d46412..36e5ed925283676d28f53a51e021bbfe118925de 100644 (file)
@@ -25,6 +25,8 @@ Gem::Specification.new do |s|
   s.executables << "arvados-login-sync"
   s.required_ruby_version = '>= 2.1.0'
   s.add_runtime_dependency 'arvados', '~> 1.3.0', '>= 1.3.0'
+  # arvados-google-api-client 0.8.7.2 is incompatible with faraday 0.16.2
+  s.add_dependency('faraday', '< 0.16')
   s.homepage    =
     'https://arvados.org'
 end
index f0733e0c2b86ded24445a968670169ca80c953eb..4235bcd0c864761701d0f98febf9f80def47aabf 100755 (executable)
@@ -10,7 +10,7 @@ set -ex -o pipefail
 
 cd /usr/src/composer
 
-npm -d install --prefix /usr/local --global yarn
+npm -d install --prefix /usr/local --global yarn@1.17.3
 
 yarn install
 
index e9e1ca4f8c8b0901c1e3792f2eb50d25f74c8fc3..85c03399f79e1410582ec21a844558dcf4c2708c 100755 (executable)
@@ -10,7 +10,7 @@ set -ex -o pipefail
 
 cd /usr/src/workbench2
 
-npm -d install --prefix /usr/local --global yarn
+npm -d install --prefix /usr/local --global yarn@1.17.3
 
 yarn install