fluke/devops-service/app/api2/handlers/key.rb
2015-07-17 20:22:29 +03:00

46 lines
1.2 KiB
Ruby

require "db/mongo/models/key"
require "fileutils"
module Devops
module API2_0
module Handler
class Key
def keys
keys = Devops::DB.connector.keys.map {|i| i.to_hash}
keys.each {|k| k.delete("path")} # We should not return path to the key
end
def create body, file_name
File.open(file_name, "w") do |f|
f.write(body["content"])
f.chmod(0400)
end
key = Devops::Model::Key.new({"path" => file_name, "id" => body["key_name"]})
Devops::DB.connector.key_insert key
end
def delete key_id
mongo = Devops::DB.connector
servers = mongo.servers_by_key key_id
unless servers.empty?
s_str = servers.map{|s| s.id}.join(", ")
raise DependencyError.new "Deleting is forbidden: Key is used in servers: #{s_str}"
end
k = mongo.key key_id
begin
FileUtils.rm(k.path)
rescue
logger.error "Missing key file for #{key_id} - #{k.filename}"
end
mongo.key_delete key_id
end
end
end
end
end