Merge branch '2498-group-admin'
[arvados.git] / services / api / app / models / keep_disk.rb
index 6ff64004bf0a8943d146859c9118ac2645f4dea3..0998fcd84a1b5f9ba855aebbcf4440426f598487 100644 (file)
@@ -4,10 +4,9 @@ class KeepDisk < ArvadosModel
   include CommonApiTemplate
   before_validation :ensure_ping_secret
 
-  api_accessible :superuser, :extend => :common do |t|
+  api_accessible :user, extend: :common do |t|
     t.add :node_uuid
     t.add :filesystem_uuid
-    t.add :ping_secret
     t.add :bytes_total
     t.add :bytes_free
     t.add :is_readable
@@ -15,20 +14,35 @@ class KeepDisk < ArvadosModel
     t.add :last_read_at
     t.add :last_write_at
     t.add :last_ping_at
+    t.add :service_host
+    t.add :service_port
+    t.add :service_ssl_flag
+  end
+  api_accessible :superuser, :extend => :user do |t|
+    t.add :ping_secret
   end
 
   def ping(o)
-    raise "must have :ip and :ping_secret" unless o[:ip] and o[:ping_secret]
+    raise "must have :service_host and :ping_secret" unless o[:service_host] and o[:ping_secret]
 
     if o[:ping_secret] != self.ping_secret
-      logger.info "Ping: secret mismatch: received \"#{o[:ping_secret]}\" != \"#{self.info[:ping_secret]}\""
+      logger.info "Ping: secret mismatch: received \"#{o[:ping_secret]}\" != \"#{self.ping_secret}\""
       return nil
     end
-    self.last_ping_at = Time.now
 
     @bypass_arvados_authorization = true
-
-    save!
+    self.update_attributes(o.select { |k,v|
+                             [:service_host,
+                              :service_port,
+                              :service_ssl_flag,
+                              :bytes_total,
+                              :bytes_free,
+                              :is_readable,
+                              :is_writable,
+                              :last_read_at,
+                              :last_write_at
+                             ].collect(&:to_s).index k
+                           }.merge(last_ping_at: Time.now))
   end
 
   protected