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

92 lines
3.3 KiB
Ruby
Raw Normal View History

2015-08-04 13:20:35 +03:00
require "lib/expire_handler"
2015-06-25 11:13:46 +03:00
module Devops
2015-07-16 12:54:16 +03:00
class DevopsApi2Application < Application
2015-06-25 11:13:46 +03:00
2015-07-16 12:54:16 +03:00
def prepare
2015-08-06 12:37:56 +03:00
require "auth/devops_auth"
2015-07-16 17:18:55 +03:00
require_relative "api2/routes/v2.0"
require_relative "api2/handlers/provider"
require_relative "api2/handlers/flavor"
require_relative "api2/handlers/filter"
require_relative "api2/handlers/group"
require_relative "api2/handlers/user"
2015-07-27 15:40:10 +03:00
require_relative "api2/handlers/network"
2015-07-23 16:56:51 +03:00
require_relative "api2/handlers/report"
require_relative "api2/handlers/deploy"
require_relative "api2/handlers/script"
2015-07-17 20:22:29 +03:00
require_relative "api2/handlers/bootstrap_templates"
require_relative "api2/handlers/key"
require_relative "api2/handlers/tag"
require_relative "api2/handlers/server"
2015-07-27 15:40:10 +03:00
require_relative "api2/handlers/image"
require_relative "api2/handlers/project"
2015-07-27 11:14:01 +03:00
require_relative "api2/handlers/stack"
require_relative "api2/handlers/stack_template"
require_relative "api2/handlers/stack_preset"
2015-07-10 13:08:59 +03:00
2015-07-16 12:54:16 +03:00
require 'lib/stubber'
end
2015-06-25 11:13:46 +03:00
2015-07-16 12:54:16 +03:00
def init
config = DevopsConfig.config
Devops::Api2.set :devops_home, config[:devops_dir]
#set :config, config
2015-06-25 11:13:46 +03:00
2015-07-16 12:54:16 +03:00
Devops::Api2.set :keys_dir, (config[:keys_dir] || File.join(config[:devops_dir], "files/keys"))
Devops::Api2.set :scripts_dir, (config[:scripts_dir] || File.join(config[:devops_dir], "files/scripts"))
[:keys_dir, :scripts_dir].each {|key| d = Devops::Api2.settings.send(key); FileUtils.mkdir_p(d) unless File.exists?(d) }
init_mongo
2015-08-04 13:20:35 +03:00
mongo = Devops::Api2.settings.mongo
mongo.create_root_user
2015-07-16 12:54:16 +03:00
::Provider::ProviderFactory.init(config)
2015-08-04 13:20:35 +03:00
::Provider::ProviderFactory.all.each do |p|
next if p.certificate_path.nil? or p.certificate_path.empty?
begin
mongo.key p.ssh_key, Devops::Model::Key::SYSTEM
rescue RecordNotFound => e
k = Devops::Model::Key.new({"id" => p.ssh_key, "path" => p.certificate_path, "scope" => Devops::Model::Key::SYSTEM})
mongo.key_insert k
end
end
ExpireHandler.init
2015-06-25 11:13:46 +03:00
2015-07-27 18:27:52 +03:00
Stubber.stub_providers!(config[:stub_providers])
2015-07-16 12:54:16 +03:00
end
2015-06-25 11:13:46 +03:00
2015-07-16 12:54:16 +03:00
def routes
2015-07-16 17:18:55 +03:00
require_relative "api2/routes/flavor"
require_relative "api2/routes/image"
require_relative "api2/routes/filter"
require_relative "api2/routes/network"
require_relative "api2/routes/group"
require_relative "api2/routes/deploy"
require_relative "api2/routes/project"
require_relative "api2/routes/key"
require_relative "api2/routes/user"
require_relative "api2/routes/provider"
require_relative "api2/routes/tag"
require_relative "api2/routes/server"
require_relative "api2/routes/script"
require_relative "api2/routes/bootstrap_templates"
require_relative "api2/routes/stack"
require_relative "api2/routes/stack_template"
2015-07-27 16:45:06 +03:00
require_relative "api2/routes/stack_presets"
2015-07-16 17:18:55 +03:00
require_relative "api2/routes/report"
2015-06-25 11:13:46 +03:00
2015-07-16 17:18:55 +03:00
routes = Devops::API2_0::Routes.constants.collect{|s| Devops::API2_0::Routes.const_get(s)}.select {|const| const.class == Module}
2015-07-16 12:54:16 +03:00
routes.each do |r|
Devops::Api2.register r
2015-06-25 11:13:46 +03:00
end
2015-07-16 12:54:16 +03:00
Routes.route "/v2.0", Devops::Api2
end
2015-06-25 11:13:46 +03:00
2015-07-16 12:54:16 +03:00
private
def init_mongo
Devops::Api2.set :mongo, Devops::Db.connector
2015-06-25 11:13:46 +03:00
end
2015-07-16 12:54:16 +03:00
2015-06-25 11:13:46 +03:00
end
end