46 lines
1.2 KiB
Ruby
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
|
|
|