fluke/devops-service/app/api2/handlers/key.rb

46 lines
1.2 KiB
Ruby
Raw Normal View History

2015-07-17 20:22:29 +03:00
require "db/mongo/models/key"
require "fileutils"
2014-12-22 14:22:04 +03:00
module Devops
2015-07-17 20:22:29 +03:00
module API2_0
2014-12-22 14:22:04 +03:00
module Handler
class Key
2015-07-17 20:22:29 +03:00
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
2014-12-22 14:22:04 +03:00
end
2015-07-17 20:22:29 +03:00
def create body, file_name
File.open(file_name, "w") do |f|
f.write(body["content"])
f.chmod(0400)
end
2014-12-22 14:22:04 +03:00
2015-07-17 20:22:29 +03:00
key = Devops::Model::Key.new({"path" => file_name, "id" => body["key_name"]})
Devops::DB.connector.key_insert key
2014-12-22 14:22:04 +03:00
end
2015-07-17 20:22:29 +03:00
def delete key_id
mongo = Devops::DB.connector
servers = mongo.servers_by_key key_id
2014-12-22 14:22:04 +03:00
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
2015-07-17 20:22:29 +03:00
k = mongo.key key_id
2014-12-22 14:22:04 +03:00
begin
FileUtils.rm(k.path)
rescue
2015-07-17 20:22:29 +03:00
logger.error "Missing key file for #{key_id} - #{k.filename}"
2014-12-22 14:22:04 +03:00
end
2015-07-17 20:22:29 +03:00
mongo.key_delete key_id
2014-12-22 14:22:04 +03:00
end
end
end
end
end