[ARVADOS] created: 48cb427d89232516d0044464eb00efdcef6ba365
Git user
git at public.curoverse.com
Mon Oct 24 17:23:35 EDT 2016
at 48cb427d89232516d0044464eb00efdcef6ba365 (commit)
commit 48cb427d89232516d0044464eb00efdcef6ba365
Author: radhika <radhika at curoverse.com>
Date: Mon Oct 24 17:22:22 2016 -0400
10231: add keep_cache_ram in runtime_constraints
diff --git a/services/api/app/models/container_request.rb b/services/api/app/models/container_request.rb
index 1798150..d0b3076 100644
--- a/services/api/app/models/container_request.rb
+++ b/services/api/app/models/container_request.rb
@@ -223,6 +223,14 @@ class ContainerRequest < ArvadosModel
errors.add :runtime_constraints, "#{k} must be a positive integer"
end
end
+
+ if runtime_constraints.include? 'keep_cache_ram' and
+ (!runtime_constraints['keep_cache_ram'].is_a?(Integer) or
+ runtime_constraints['keep_cache_ram'] <= 0)
+ errors.add :runtime_constraints, "keep_cache_ram must be a positive integer"
+ elsif !runtime_constraints.include? 'keep_cache_ram'
+ runtime_constraints['keep_cache_ram'] = Rails.configuration.container_default_keep_cache_ram
+ end
end
end
diff --git a/services/api/config/application.default.yml b/services/api/config/application.default.yml
index 5fe0302..a9aa953 100644
--- a/services/api/config/application.default.yml
+++ b/services/api/config/application.default.yml
@@ -393,6 +393,9 @@ common:
# with the cancelled container.
container_count_max: 3
+ # Default value for keep_cache_ram of a container's runtime_constraints.
+ container_default_keep_cache_ram: 268435456
+
development:
force_ssl: false
cache_classes: false
diff --git a/services/api/test/unit/container_request_test.rb b/services/api/test/unit/container_request_test.rb
index ecfbe46..172ba49 100644
--- a/services/api/test/unit/container_request_test.rb
+++ b/services/api/test/unit/container_request_test.rb
@@ -423,7 +423,8 @@ class ContainerRequestTest < ActiveSupport::TestCase
command: ["echo", "hello"],
output_path: "test",
runtime_constraints: {"vcpus" => 4,
- "ram" => 12000000000},
+ "ram" => 12000000000,
+ "keep_cache_ram" => 268435456},
mounts: {"test" => {"kind" => "json"}}}
set_user_from_auth :active
cr1 = create_minimal_req!(common_attrs.merge({state: ContainerRequest::Committed,
@@ -523,4 +524,32 @@ class ContainerRequestTest < ActiveSupport::TestCase
assert_equal cr.container_uuid, cr3.container_uuid
assert_equal ContainerRequest::Final, cr3.state
end
+
+ [
+ [{"vcpus" => 1, "ram" => 123, "keep_cache_ram" => 100}, ContainerRequest::Committed, 100],
+ [{"vcpus" => 1, "ram" => 123}, ContainerRequest::Uncommitted],
+ [{"vcpus" => 1, "ram" => 123}, ContainerRequest::Committed],
+ [{"vcpus" => 1, "ram" => 123, "keep_cache_ram" => -1}, ContainerRequest::Committed, ActiveRecord::RecordInvalid],
+ [{"vcpus" => 1, "ram" => 123, "keep_cache_ram" => '123'}, ContainerRequest::Committed, ActiveRecord::RecordInvalid],
+ ].each do |rc, state, expected|
+ test "create container request with #{rc} in state #{state} and verify keep_cache_ram #{expected}" do
+ common_attrs = {cwd: "test",
+ priority: 1,
+ command: ["echo", "hello"],
+ output_path: "test",
+ runtime_constraints: rc,
+ mounts: {"test" => {"kind" => "json"}}}
+ set_user_from_auth :active
+
+ if expected == ActiveRecord::RecordInvalid
+ assert_raises(ActiveRecord::RecordInvalid) do
+ create_minimal_req!(common_attrs.merge({state: state}))
+ end
+ else
+ cr = create_minimal_req!(common_attrs.merge({state: state}))
+ expected = Rails.configuration.container_default_keep_cache_ram if state == ContainerRequest::Committed and expected.nil?
+ assert_equal expected, cr.runtime_constraints['keep_cache_ram']
+ end
+ end
+ end
end
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list