2015-02-12 13:01:05 +03:00
|
|
|
module Connectors
|
|
|
|
|
class Server < Base
|
|
|
|
|
include Helpers::DeleteCommand,
|
|
|
|
|
Helpers::ListCommand
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def initialize(db)
|
|
|
|
|
self.collection = db.collection('servers')
|
|
|
|
|
end
|
|
|
|
|
|
2015-05-29 15:40:07 +03:00
|
|
|
def servers_find(query, fields=nil)
|
2015-02-12 13:01:05 +03:00
|
|
|
query_options = fields.nil? ? {} : {fields: fields}
|
|
|
|
|
list(query, query_options)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def servers(p=nil, env=nil, names=nil, reserved=nil, fields=:all)
|
|
|
|
|
q = {}
|
|
|
|
|
q['project'] = p unless p.nil? or p.empty?
|
|
|
|
|
q['deploy_env'] = env unless env.nil? or env.empty?
|
|
|
|
|
q['chef_node_name'] = {'$in' => names} unless names.nil? or names.class != Array
|
|
|
|
|
q['reserved_by'] = {'$ne' => nil} unless reserved.nil?
|
|
|
|
|
f = nil
|
|
|
|
|
unless fields == :all
|
|
|
|
|
f = fields
|
|
|
|
|
['_id', 'chef_node_name'].each do |k|
|
|
|
|
|
f.push(k) unless f.include?(k)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
servers_find(q, f)
|
|
|
|
|
end
|
|
|
|
|
|
2015-08-05 15:06:18 +03:00
|
|
|
def stack_servers(stack_id)
|
|
|
|
|
list('stack' => stack_id)
|
|
|
|
|
end
|
|
|
|
|
|
2015-02-12 13:01:05 +03:00
|
|
|
def servers_by_names(names)
|
|
|
|
|
query = {}
|
|
|
|
|
query['chef_node_name'] = {'$in' => names} unless names.nil? or names.class != Array
|
|
|
|
|
list(query)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def server_by_instance_id(id)
|
|
|
|
|
find_server('_id' => id)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def server_by_chef_node_name(name)
|
|
|
|
|
find_server('chef_node_name' => name)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def servers_by_key(key_name)
|
|
|
|
|
collection.find('key' => key_name).to_a.map { |bson| model_from_bson(bson) }
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def server_insert(server)
|
|
|
|
|
#server.validate!
|
|
|
|
|
server.created_at = Time.now
|
|
|
|
|
collection.insert(server.to_mongo_hash)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# somewhy servers are not validated in previous version of code. I leave this until I know, why.
|
|
|
|
|
def server_update(server)
|
|
|
|
|
collection.update({'_id' => server.id}, server.to_hash_without_id)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# somewhy servers are not validated in previous version of code. I leave this until I know, why.
|
|
|
|
|
def server_set_chef_node_name(server)
|
|
|
|
|
collection.update({'_id' => server.id}, {'$set' => {'chef_node_name' => server.chef_node_name}})
|
|
|
|
|
end
|
|
|
|
|
|
2015-07-30 02:29:53 +03:00
|
|
|
def stack_servers_delete(stack_id)
|
|
|
|
|
collection.remove('stack' => stack_id)
|
|
|
|
|
end
|
|
|
|
|
|
2015-08-04 12:36:10 +03:00
|
|
|
def set_server_run_list(id, run_list)
|
|
|
|
|
@collection.update({"_id" => id}, {"$set" => {"run_list" => run_list}})
|
|
|
|
|
end
|
|
|
|
|
|
2015-02-12 13:01:05 +03:00
|
|
|
private
|
|
|
|
|
|
|
|
|
|
def model_from_bson(bson)
|
2015-03-06 12:20:30 +03:00
|
|
|
Devops::Model::Server.build_from_bson(bson)
|
2015-02-12 13:01:05 +03:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# couldn't be replaced with ShowCommand (_id doesn't neccesary appear in params)
|
|
|
|
|
def find_server(params)
|
|
|
|
|
bson = collection.find(params).to_a.first
|
|
|
|
|
if bson.nil?
|
|
|
|
|
if params.has_key? "_id"
|
|
|
|
|
raise RecordNotFound.new("No server by instance id '#{params["_id"]}' found")
|
|
|
|
|
elsif params.has_key? "chef_node_name"
|
|
|
|
|
raise RecordNotFound.new("No server by node name '#{params["chef_node_name"]}' found")
|
|
|
|
|
else
|
|
|
|
|
raise RecordNotFound.new('Invalid params')
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
model_from_bson(bson)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|