projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix ownership-change permission check
[arvados.git]
/
app
/
models
/
node.rb
diff --git
a/app/models/node.rb
b/app/models/node.rb
index 67a14384c6d770031846cce0841e3d5619d3535d..2333d80544607cfe015fcdd7023aac123b2a2127 100644
(file)
--- a/
app/models/node.rb
+++ b/
app/models/node.rb
@@
-1,5
+1,7
@@
-class Node <
ActiveRecord::Base
+class Node <
OrvosModel
include AssignUuid
include AssignUuid
+ include KindAndEtag
+ include CommonApiTemplate
serialize :info, Hash
before_validation :ensure_ping_secret
after_update :dnsmasq_update
serialize :info, Hash
before_validation :ensure_ping_secret
after_update :dnsmasq_update
@@
-14,23
+16,17
@@
class Node < ActiveRecord::Base
nil
end
@@domain = Rails.configuration.compute_node_domain rescue `hostname --domain`.strip
nil
end
@@domain = Rails.configuration.compute_node_domain rescue `hostname --domain`.strip
+ @@nameservers = Rails.configuration.compute_node_nameservers
- acts_as_api
- api_accessible :superuser do |t|
- t.add :uuid
- t.add :created_by_client
- t.add :created_by_user
- t.add :created_at
- t.add :modified_by_client
- t.add :modified_by_user
- t.add :modified_at
+ api_accessible :superuser, :extend => :common do |t|
t.add :hostname
t.add :domain
t.add :ip_address
t.add :first_ping_at
t.add :last_ping_at
t.add :info
t.add :hostname
t.add :domain
t.add :ip_address
t.add :first_ping_at
t.add :last_ping_at
t.add :info
- t.add :updated_at
+ t.add :status
+ t.add lambda { |x| @@nameservers }, :as => :nameservers
end
def info
end
def info
@@
-73,7
+69,10
@@
class Node < ActiveRecord::Base
end
# Record instance ID if not already known
end
# Record instance ID if not already known
- self.info[:ec2_instance_id] ||= o[:ec2_instance_id]
+ if !self.info[:ec2_instance_id] and o[:ec2_instance_id]
+ self.info[:ec2_instance_id] = o[:ec2_instance_id]
+ `ec2-create-tags #{self.info[:ec2_instance_id]} --tag 'Name=#{self.uuid}'`
+ end
# Assign hostname
if self.slot_number.nil?
# Assign hostname
if self.slot_number.nil?
@@
-89,6
+88,9
@@
class Node < ActiveRecord::Base
raise "No available node slots" if try_slot == MAX_SLOTS
end while true
self.hostname = self.class.hostname_for_slot(self.slot_number)
raise "No available node slots" if try_slot == MAX_SLOTS
end while true
self.hostname = self.class.hostname_for_slot(self.slot_number)
+ if info[:ec2_instance_id]
+ `ec2-create-tags #{self.info[:ec2_instance_id]} --tag 'hostname=#{self.hostname}'`
+ end
end
save
end
save
@@
-99,7
+101,8
@@
class Node < ActiveRecord::Base
cmd = ["ec2-run-instances",
"--user-data '#{ping_url}'",
"-t c1.xlarge -n 1 -g orvos-compute",
cmd = ["ec2-run-instances",
"--user-data '#{ping_url}'",
"-t c1.xlarge -n 1 -g orvos-compute",
- "ami-68ca6901"
+ "--client-token", self.uuid,
+ Rails.configuration.compute_node_ami
].join(' ')
self.info[:ec2_start_command] = cmd
logger.info "#{self.uuid} ec2_start_command= #{cmd.inspect}"
].join(' ')
self.info[:ec2_start_command] = cmd
logger.info "#{self.uuid} ec2_start_command= #{cmd.inspect}"
@@
-107,7
+110,9
@@
class Node < ActiveRecord::Base
self.info[:ec2_start_result] = result
logger.info "#{self.uuid} ec2_start_result= #{result.inspect}"
result.match(/INSTANCE\s*(i-[0-9a-f]+)/) do |m|
self.info[:ec2_start_result] = result
logger.info "#{self.uuid} ec2_start_result= #{result.inspect}"
result.match(/INSTANCE\s*(i-[0-9a-f]+)/) do |m|
- self.info[:ec2_instance_id] = m[1]
+ instance_id = m[1]
+ self.info[:ec2_instance_id] = instance_id
+ `ec2-create-tags #{instance_id} --tag 'Name=#{self.uuid}'`
end
self.save!
end
end
self.save!
end