[ARVADOS] created: 2b6837ef2b57204b7bf4fd5c4373283892999268

git at public.curoverse.com git at public.curoverse.com
Fri Jan 22 13:35:46 EST 2016


        at  2b6837ef2b57204b7bf4fd5c4373283892999268 (commit)


commit 2b6837ef2b57204b7bf4fd5c4373283892999268
Author: radhika <radhika at curoverse.com>
Date:   Fri Jan 22 13:34:07 2016 -0500

    8198: consider X-Forwarded-For header by way of request.repote_ip while setting node ip address.

diff --git a/doc/install/install-compute-node.html.textile.liquid b/doc/install/install-compute-node.html.textile.liquid
index 7d13f77..b1e377a 100644
--- a/doc/install/install-compute-node.html.textile.liquid
+++ b/doc/install/install-compute-node.html.textile.liquid
@@ -152,8 +152,7 @@ if ! test -f /root/node.json ; then
 import arvados, json, socket
 fqdn = socket.getfqdn()
 hostname, _, domain = fqdn.partition('.')
-ip_address = socket.gethostbyname(fqdn)
-node = arvados.api('v1').nodes().create(body={'hostname': hostname, 'domain': domain, 'ip_address': ip_address}).execute()
+node = arvados.api('v1').nodes().create(body={'hostname': hostname, 'domain': domain}).execute()
 with open('/root/node.json', 'w') as node_file:
     json.dump(node, node_file, indent=2)
 EOF
diff --git a/services/api/app/controllers/arvados/v1/nodes_controller.rb b/services/api/app/controllers/arvados/v1/nodes_controller.rb
index 4ab5695..5e2404e 100644
--- a/services/api/app/controllers/arvados/v1/nodes_controller.rb
+++ b/services/api/app/controllers/arvados/v1/nodes_controller.rb
@@ -23,7 +23,7 @@ class Arvados::V1::NodesController < ApplicationController
         return render_not_found
       end
       ping_data = {
-        ip: params[:local_ipv4] || request.env['REMOTE_ADDR'],
+        ip: params[:local_ipv4] || request.remote_ip,
         ec2_instance_id: params[:instance_id]
       }
       [:ping_secret, :total_cpu_cores, :total_ram_mb, :total_scratch_mb]
diff --git a/services/api/test/fixtures/nodes.yml b/services/api/test/fixtures/nodes.yml
index 23d2e19..489bb1d 100644
--- a/services/api/test/fixtures/nodes.yml
+++ b/services/api/test/fixtures/nodes.yml
@@ -80,3 +80,14 @@ new_with_custom_hostname:
   job_uuid: ~
   info:
     ping_secret: "abcdyi0x4lb5q4gzqqtrnq30oyj08r8dtdimmanbqw49z1anz2"
+
+node_with_no_ip_address_yet:
+  uuid: zzzzz-7ekkf-nodenoipaddryet
+  owner_uuid: zzzzz-tpzed-000000000000000
+  hostname: noipaddr
+  slot_number: ~
+  last_ping_at: ~
+  first_ping_at: ~
+  job_uuid: ~
+  info:
+    ping_secret: "abcdyefg4lb5q4gzqqtrnq30oyj08r8dtdimmanbqw49z1anz2"
diff --git a/services/api/test/functional/arvados/v1/nodes_controller_test.rb b/services/api/test/functional/arvados/v1/nodes_controller_test.rb
index d2f5669..428c663 100644
--- a/services/api/test/functional/arvados/v1/nodes_controller_test.rb
+++ b/services/api/test/functional/arvados/v1/nodes_controller_test.rb
@@ -182,4 +182,42 @@ class Arvados::V1::NodesControllerTest < ActionController::TestCase
     }
     assert_response 422
   end
+
+  test "first ping should set ip addr using local_ipv4 when provided" do
+    post :ping, {
+      id: 'zzzzz-7ekkf-nodenoipaddryet',
+      instance_id: 'i-0000000',
+      local_ipv4: '172.17.2.172',
+      ping_secret: 'abcdyefg4lb5q4gzqqtrnq30oyj08r8dtdimmanbqw49z1anz2'
+    }
+    assert_response :success
+    response = JSON.parse(@response.body)
+    assert_equal 'zzzzz-7ekkf-nodenoipaddryet', response['uuid']
+    assert_equal '172.17.2.172', response['ip_address']
+  end
+
+  test "first ping should set ip addr using remote_ip when local_ipv4 is not provided" do
+    post :ping, {
+      id: 'zzzzz-7ekkf-nodenoipaddryet',
+      instance_id: 'i-0000000',
+      ping_secret: 'abcdyefg4lb5q4gzqqtrnq30oyj08r8dtdimmanbqw49z1anz2'
+    }
+    assert_response :success
+    response = JSON.parse(@response.body)
+    assert_equal 'zzzzz-7ekkf-nodenoipaddryet', response['uuid']
+    assert_equal request.remote_ip, response['ip_address']
+  end
+
+  test "future pings should not change previous ip address" do
+    post :ping, {
+      id: 'zzzzz-7ekkf-2z3mc76g2q73aio',
+      instance_id: 'i-0000000',
+      local_ipv4: '172.17.2.175',
+      ping_secret: '69udawxvn3zzj45hs8bumvndricrha4lcpi23pd69e44soanc0'
+    }
+    assert_response :success
+    response = JSON.parse(@response.body)
+    assert_equal 'zzzzz-7ekkf-2z3mc76g2q73aio', response['uuid']
+    assert_equal '172.17.2.174', response['ip_address']   # original ip address is not overwritten
+  end
 end

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list