class Node < ActiveRecord::Base
include AssignUuid
+ include KindAndEtag
+ include CommonApiTemplate
serialize :info, Hash
before_validation :ensure_ping_secret
after_update :dnsmasq_update
end
@@domain = Rails.configuration.compute_node_domain rescue `hostname --domain`.strip
- 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 :updated_at
t.add :status
end
--- /dev/null
+module CommonApiTemplate
+ def self.included(base)
+ base.extend(ClassMethods)
+ base.acts_as_api
+ base.api_accessible :common do |t|
+ t.add :kind
+ t.add :etag
+ 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
+ t.add :updated_at
+ end
+ end
+
+ module ClassMethods
+ end
+end
--- /dev/null
+module KindAndEtag
+
+ def self.included(base)
+ base.extend(ClassMethods)
+ end
+
+ module ClassMethods
+ end
+
+ def kind
+ 'orvos#' + self.class.to_s.underscore
+ end
+
+ def etag
+ Digest::MD5.hexdigest(self.inspect).to_i(16).to_s(36)
+ end
+end