devops db, config
This commit is contained in:
parent
d2a36bca9f
commit
a0dd907afc
@ -4,21 +4,15 @@ require "rubygems"
|
|||||||
require "bundler/setup"
|
require "bundler/setup"
|
||||||
|
|
||||||
require_relative "devops-service"
|
require_relative "devops-service"
|
||||||
require_relative "devops_loader"
|
require_relative "devops_config"
|
||||||
require_relative "routes"
|
require_relative "routes"
|
||||||
|
|
||||||
root = File.dirname(__FILE__)
|
root = File.dirname(__FILE__)
|
||||||
|
|
||||||
# Read configuration file
|
# Read configuration file
|
||||||
config_file = File.join(root, "config.rb")
|
DevopsConfig.read
|
||||||
config = {}
|
config = DevopsConfig.config
|
||||||
if File.exists? config_file
|
|
||||||
eval File.read config_file
|
|
||||||
else
|
|
||||||
raise "No config file '#{config_file}' found"
|
|
||||||
end
|
|
||||||
|
|
||||||
config[:devops_dir] = File.join(ENV["HOME"], ".devops") if config[:devops_dir].nil?
|
|
||||||
puts "Devops home: #{config[:devops_dir]}"
|
puts "Devops home: #{config[:devops_dir]}"
|
||||||
unless File.exists?(config[:devops_dir])
|
unless File.exists?(config[:devops_dir])
|
||||||
FileUtils.mkdir_p config[:devops_dir]
|
FileUtils.mkdir_p config[:devops_dir]
|
||||||
@ -30,5 +24,5 @@ config[:report_dir_v2] = File.expand_path(File.join(config[:devops_dir], "report
|
|||||||
:report_dir_v2
|
:report_dir_v2
|
||||||
].each {|key| d = config[key]; FileUtils.mkdir_p(d) unless File.exists?(d) }
|
].each {|key| d = config[key]; FileUtils.mkdir_p(d) unless File.exists?(d) }
|
||||||
|
|
||||||
DevopsService.init(config)
|
DevopsService.init
|
||||||
run Rack::URLMap.new(Devops::Routes.routes)
|
run Rack::URLMap.new(Devops::Routes.routes)
|
||||||
|
|||||||
@ -1,5 +1,3 @@
|
|||||||
#!/usr/bin/env ruby
|
|
||||||
|
|
||||||
require "wisper"
|
require "wisper"
|
||||||
|
|
||||||
$:.push File.dirname(__FILE__)
|
$:.push File.dirname(__FILE__)
|
||||||
@ -11,6 +9,7 @@ require "db/mongo/mongo_connector"
|
|||||||
require "providers/provider_factory"
|
require "providers/provider_factory"
|
||||||
|
|
||||||
require "loader"
|
require "loader"
|
||||||
|
require "devops_db"
|
||||||
|
|
||||||
require "sidekiq/web"
|
require "sidekiq/web"
|
||||||
|
|
||||||
@ -28,8 +27,9 @@ class DevopsService
|
|||||||
|
|
||||||
class << self
|
class << self
|
||||||
|
|
||||||
def routes config
|
def routes
|
||||||
#Devops::Routes.preffix = ""
|
config = DevopsConfig.config
|
||||||
|
Devops::Routes.preffix = config[:url_prefix]
|
||||||
Devops::Routes.route "/version", DevopsVersion
|
Devops::Routes.route "/version", DevopsVersion
|
||||||
Devops::Routes.route "/v2.0", Devops::Version2_0::Application
|
Devops::Routes.route "/v2.0", Devops::Version2_0::Application
|
||||||
Devops::Routes.route "/client", Client.new(config)
|
Devops::Routes.route "/client", Client.new(config)
|
||||||
@ -37,12 +37,18 @@ class DevopsService
|
|||||||
Devops::Routes.route "/sidekiq", Sidekiq::Web
|
Devops::Routes.route "/sidekiq", Sidekiq::Web
|
||||||
end
|
end
|
||||||
|
|
||||||
def init config
|
def init
|
||||||
routes config
|
# init database
|
||||||
Devops::Version2_0::Application.init config
|
Devops::Db.init
|
||||||
DevopsLoader.load
|
# init plugins
|
||||||
DevopsLoader.routes
|
Devops::Loader.init_plugins
|
||||||
Devops::Loader.plugins config
|
# init routes classes
|
||||||
|
Devops::Version2_0::Application.init
|
||||||
|
Devops::Version2_0::Application.register_routes
|
||||||
|
# init routes paths
|
||||||
|
routes
|
||||||
|
# add plugins routes
|
||||||
|
Devops::Loader.routes
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
48
devops-service/devops_config.rb
Normal file
48
devops-service/devops_config.rb
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
require "socket"
|
||||||
|
|
||||||
|
class DevopsConfig
|
||||||
|
|
||||||
|
@@config = nil
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def read config_file=nil
|
||||||
|
if config_file.nil?
|
||||||
|
root = File.dirname(__FILE__)
|
||||||
|
config_file = File.join(root, "config.rb")
|
||||||
|
end
|
||||||
|
config = {:url_prefix => ""}
|
||||||
|
if File.exists? config_file
|
||||||
|
eval File.read config_file
|
||||||
|
else
|
||||||
|
raise "No config file '#{config_file}' found"
|
||||||
|
end
|
||||||
|
config[:devops_dir] = File.join(ENV["HOME"], ".devops") if config[:devops_dir].nil?
|
||||||
|
addr = first_public_ipv4 || first_private_ipv4
|
||||||
|
config[:address] = if addr.nil?
|
||||||
|
"localhost"
|
||||||
|
else
|
||||||
|
addr.ip_address
|
||||||
|
end
|
||||||
|
|
||||||
|
DevopsConfig.config = config
|
||||||
|
end
|
||||||
|
|
||||||
|
def config= config
|
||||||
|
@@config = config
|
||||||
|
end
|
||||||
|
|
||||||
|
def config
|
||||||
|
@@config
|
||||||
|
end
|
||||||
|
|
||||||
|
def first_private_ipv4
|
||||||
|
Socket.ip_address_list.detect{|intf| intf.ipv4_private?}
|
||||||
|
end
|
||||||
|
|
||||||
|
def first_public_ipv4
|
||||||
|
Socket.ip_address_list.detect{|intf| intf.ipv4? and !intf.ipv4_loopback? and !intf.ipv4_multicast? and !intf.ipv4_private?}
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
23
devops-service/devops_db.rb
Normal file
23
devops-service/devops_db.rb
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
module Devops
|
||||||
|
class Db
|
||||||
|
|
||||||
|
@@db = nil
|
||||||
|
|
||||||
|
class << self
|
||||||
|
def init
|
||||||
|
config = DevopsConfig.config
|
||||||
|
mongo_db = config[:mongo_db] || "devops"
|
||||||
|
mongo_host = config[:mongo_host] || "localhost"
|
||||||
|
mongo_port = config[:mongo_port] || 27017
|
||||||
|
mongo_user = config[:mongo_user]
|
||||||
|
mongo_password = config[:mongo_password]
|
||||||
|
@@db = MongoConnector.new(mongo_db, mongo_host, mongo_port, mongo_user, mongo_password)
|
||||||
|
end
|
||||||
|
|
||||||
|
def connector
|
||||||
|
@@db
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@ -4,14 +4,4 @@ class DevopsLoader
|
|||||||
#Devops::Routes.route "/version", DevopsVersion
|
#Devops::Routes.route "/version", DevopsVersion
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.routes
|
|
||||||
if defined?(Devops::Plugin)
|
|
||||||
routes = {}
|
|
||||||
plugins = Devops::Plugin.constants.collect{|s| Devops::Plugin.const_get(s)}.select {|const| const.class == Module}
|
|
||||||
puts plugins.inspect
|
|
||||||
plugins.each do |p|
|
|
||||||
p.routes
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|||||||
@ -2,18 +2,28 @@ module Devops
|
|||||||
module Loader
|
module Loader
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def plugins config
|
def init_plugins
|
||||||
|
plugins do |plugin|
|
||||||
|
plugin.init
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def routes
|
||||||
|
plugins do |plugin|
|
||||||
|
plugin.routes
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def plugins &block
|
||||||
if defined?(Devops::Plugin)
|
if defined?(Devops::Plugin)
|
||||||
routes = {}
|
|
||||||
plugins = Devops::Plugin.constants.collect{|s| Devops::Plugin.const_get(s)}.select {|const| const.class == Module}
|
plugins = Devops::Plugin.constants.collect{|s| Devops::Plugin.const_get(s)}.select {|const| const.class == Module}
|
||||||
puts plugins.inspect
|
puts plugins.inspect
|
||||||
plugins.each do |p|
|
plugins.each do |p|
|
||||||
p.init(config)
|
yield p
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
require "bundler/setup"
|
|
||||||
require "sinatra/base"
|
require "sinatra/base"
|
||||||
require "sinatra/streaming"
|
require "sinatra/streaming"
|
||||||
require "helpers/version_2"
|
require "helpers/version_2"
|
||||||
@ -41,15 +40,10 @@ module Devops
|
|||||||
class Application < Sinatra::Base
|
class Application < Sinatra::Base
|
||||||
|
|
||||||
class << self
|
class << self
|
||||||
def init config
|
def init
|
||||||
|
config = DevopsConfig.config
|
||||||
set :devops_home, config[:devops_dir]
|
set :devops_home, config[:devops_dir]
|
||||||
set :config, config
|
#set :config, config
|
||||||
|
|
||||||
set :mongo_db, config[:mongo_db] || "devops"
|
|
||||||
set :mongo_host, config[:mongo_host] || "localhost"
|
|
||||||
set :mongo_port, config[:mongo_port] || 27017
|
|
||||||
set :mongo_user, config[:mongo_user]
|
|
||||||
set :mongo_password, config[:mongo_password]
|
|
||||||
|
|
||||||
set :keys_dir, (config[:keys_dir] || File.join(config[:devops_dir], "files/keys"))
|
set :keys_dir, (config[:keys_dir] || File.join(config[:devops_dir], "files/keys"))
|
||||||
set :scripts_dir, (config[:scripts_dir] || File.join(config[:devops_dir], "files/scripts"))
|
set :scripts_dir, (config[:scripts_dir] || File.join(config[:devops_dir], "files/scripts"))
|
||||||
@ -64,8 +58,25 @@ module Devops
|
|||||||
end
|
end
|
||||||
|
|
||||||
def init_mongo
|
def init_mongo
|
||||||
mongo = MongoConnector.new(settings.mongo_db, settings.mongo_host, settings.mongo_port, settings.mongo_user, settings.mongo_password)
|
set :mongo, Devops::Db.connector
|
||||||
set :mongo, mongo
|
end
|
||||||
|
|
||||||
|
def register_routes
|
||||||
|
register Devops::Version2_0::Routes::ProviderRoutes
|
||||||
|
register Devops::Version2_0::Routes::BootstrapTemplatesRoutes
|
||||||
|
register Devops::Version2_0::Routes::UserRoutes
|
||||||
|
register Devops::Version2_0::Routes::FilterRoutes
|
||||||
|
register Devops::Version2_0::Routes::FlavorRoutes
|
||||||
|
register Devops::Version2_0::Routes::GroupRoutes
|
||||||
|
register Devops::Version2_0::Routes::ImageRoutes
|
||||||
|
register Devops::Version2_0::Routes::KeyRoutes
|
||||||
|
register Devops::Version2_0::Routes::NetworkRoutes
|
||||||
|
register Devops::Version2_0::Routes::ProjectRoutes
|
||||||
|
register Devops::Version2_0::Routes::ScriptRoutes
|
||||||
|
register Devops::Version2_0::Routes::ServerRoutes
|
||||||
|
register Devops::Version2_0::Routes::StatusRoutes
|
||||||
|
register Devops::Version2_0::Routes::TagRoutes
|
||||||
|
register Devops::Version2_0::Routes::DeployRoutes
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
@ -87,22 +98,6 @@ module Devops
|
|||||||
helpers Sinatra::Streaming
|
helpers Sinatra::Streaming
|
||||||
helpers Devops::Version2_0::Helpers
|
helpers Devops::Version2_0::Helpers
|
||||||
|
|
||||||
register Devops::Version2_0::Routes::ProviderRoutes
|
|
||||||
register Devops::Version2_0::Routes::BootstrapTemplatesRoutes
|
|
||||||
register Devops::Version2_0::Routes::UserRoutes
|
|
||||||
register Devops::Version2_0::Routes::FilterRoutes
|
|
||||||
register Devops::Version2_0::Routes::FlavorRoutes
|
|
||||||
register Devops::Version2_0::Routes::GroupRoutes
|
|
||||||
register Devops::Version2_0::Routes::ImageRoutes
|
|
||||||
register Devops::Version2_0::Routes::KeyRoutes
|
|
||||||
register Devops::Version2_0::Routes::NetworkRoutes
|
|
||||||
register Devops::Version2_0::Routes::ProjectRoutes
|
|
||||||
register Devops::Version2_0::Routes::ScriptRoutes
|
|
||||||
register Devops::Version2_0::Routes::ServerRoutes
|
|
||||||
register Devops::Version2_0::Routes::StatusRoutes
|
|
||||||
register Devops::Version2_0::Routes::TagRoutes
|
|
||||||
register Devops::Version2_0::Routes::DeployRoutes
|
|
||||||
|
|
||||||
use Rack::Auth::Basic do |username, password|
|
use Rack::Auth::Basic do |username, password|
|
||||||
begin
|
begin
|
||||||
settings.mongo.user_auth(username, password)
|
settings.mongo.user_auth(username, password)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user