devops apps
This commit is contained in:
parent
a23f518196
commit
22663ec30c
@ -1,6 +1,6 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
ruby "2.0.0"
|
||||
#ruby "2.0.0"
|
||||
|
||||
gem "thin", "~>1.5.1"
|
||||
gem "mime-types", "~>1.25.1"
|
||||
@ -9,17 +9,18 @@ gem "sinatra-contrib"#, "1.4.1"
|
||||
gem "sinatra-websocket"#, "~>0.3.0"
|
||||
gem "fog", "~>1.20"
|
||||
gem "mixlib-shellout"
|
||||
gem "chef", ">=11"
|
||||
gem "chef", ">=12"
|
||||
gem "mongo"
|
||||
gem "bson_ext"
|
||||
gem "multi_json", "1.7.8"
|
||||
gem "rufus-scheduler", "2.0.24"
|
||||
gem "sidekiq", "3.2.6"
|
||||
gem 'wisper'
|
||||
gem 'rake', '10.0.0'
|
||||
gem 'rake', '10.2.0'
|
||||
gem 'rack', '1.5.2'
|
||||
gem 'hooks'
|
||||
|
||||
gem "devops-nibr", :path => "plugins/devops-nibr"
|
||||
#gem "devops-nibr", :path => "plugins/devops-nibr"
|
||||
|
||||
group :test do
|
||||
gem 'cucumber'
|
||||
|
||||
@ -1,66 +1,84 @@
|
||||
PATH
|
||||
remote: plugins/devops-nibr
|
||||
specs:
|
||||
devops-nibr (0.0.1)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
CFPropertyList (2.3.0)
|
||||
addressable (2.3.6)
|
||||
CFPropertyList (2.3.1)
|
||||
addressable (2.3.8)
|
||||
backports (3.6.4)
|
||||
bson (1.11.1)
|
||||
bson_ext (1.11.1)
|
||||
bson (~> 1.11.1)
|
||||
bson (1.12.3)
|
||||
bson_ext (1.12.3)
|
||||
bson (~> 1.12.3)
|
||||
builder (3.2.2)
|
||||
byebug (3.5.1)
|
||||
columnize (~> 0.8)
|
||||
debugger-linecache (~> 1.2)
|
||||
slop (~> 3.6)
|
||||
byebug (5.0.0)
|
||||
columnize (= 0.9.0)
|
||||
celluloid (0.15.2)
|
||||
timers (~> 1.1.0)
|
||||
chef (11.6.0)
|
||||
erubis
|
||||
highline (>= 1.6.9)
|
||||
json (>= 1.4.4, <= 1.7.7)
|
||||
mixlib-authentication (>= 1.3.0)
|
||||
mixlib-cli (~> 1.3.0)
|
||||
mixlib-config (>= 1.1.2)
|
||||
mixlib-log (>= 1.3.0)
|
||||
mixlib-shellout
|
||||
chef (12.3.0)
|
||||
chef-zero (~> 4.1)
|
||||
diff-lcs (~> 1.2, >= 1.2.4)
|
||||
erubis (~> 2.7)
|
||||
ffi-yajl (>= 1.2, < 3.0)
|
||||
highline (~> 1.6, >= 1.6.9)
|
||||
mixlib-authentication (~> 1.3)
|
||||
mixlib-cli (~> 1.4)
|
||||
mixlib-config (~> 2.0)
|
||||
mixlib-log (~> 1.3)
|
||||
mixlib-shellout (>= 2.0.0.rc.0, < 3.0)
|
||||
net-ssh (~> 2.6)
|
||||
net-ssh-multi (~> 1.1.0)
|
||||
ohai (>= 0.6.0)
|
||||
rest-client (>= 1.0.4, < 1.7.0)
|
||||
yajl-ruby (~> 1.1)
|
||||
net-ssh-multi (~> 1.1)
|
||||
ohai (~> 8.0)
|
||||
plist (~> 3.1.0)
|
||||
pry (~> 0.9)
|
||||
rspec-core (~> 3.2)
|
||||
rspec-expectations (~> 3.2)
|
||||
rspec-mocks (~> 3.2)
|
||||
rspec_junit_formatter (~> 0.2.0)
|
||||
serverspec (~> 2.7)
|
||||
specinfra (~> 2.10)
|
||||
chef-zero (4.2.3)
|
||||
ffi-yajl (>= 1.1, < 3.0)
|
||||
hashie (~> 2.0)
|
||||
mixlib-log (~> 1.3)
|
||||
rack
|
||||
uuidtools (~> 2.1)
|
||||
coderay (1.1.0)
|
||||
columnize (0.9.0)
|
||||
connection_pool (2.1.1)
|
||||
cucumber (1.3.18)
|
||||
connection_pool (2.2.0)
|
||||
cucumber (2.0.0)
|
||||
builder (>= 2.1.2)
|
||||
cucumber-core (~> 1.1.3)
|
||||
diff-lcs (>= 1.1.3)
|
||||
gherkin (~> 2.12)
|
||||
multi_json (>= 1.7.5, < 2.0)
|
||||
multi_test (>= 0.1.1)
|
||||
daemons (1.1.9)
|
||||
debugger-linecache (1.2.0)
|
||||
multi_test (>= 0.1.2)
|
||||
cucumber-core (1.1.3)
|
||||
gherkin (~> 2.12.0)
|
||||
daemons (1.2.2)
|
||||
diff-lcs (1.2.5)
|
||||
em-websocket (0.3.8)
|
||||
addressable (>= 2.1.1)
|
||||
eventmachine (>= 0.12.9)
|
||||
erubis (2.7.0)
|
||||
eventmachine (1.0.4)
|
||||
excon (0.43.0)
|
||||
eventmachine (1.0.7)
|
||||
excon (0.45.3)
|
||||
ffi (1.9.8)
|
||||
ffi-yajl (1.4.0)
|
||||
ffi (~> 1.5)
|
||||
libyajl2 (~> 1.2)
|
||||
fission (0.5.0)
|
||||
CFPropertyList (~> 2.2)
|
||||
fog (1.27.0)
|
||||
fog (1.31.0)
|
||||
fog-atmos
|
||||
fog-aws (~> 0.0)
|
||||
fog-brightbox (~> 0.4)
|
||||
fog-core (~> 1.27, >= 1.27.3)
|
||||
fog-core (~> 1.30)
|
||||
fog-ecloud
|
||||
fog-google (>= 0.0.2)
|
||||
fog-json
|
||||
fog-local
|
||||
fog-powerdns (>= 0.1.1)
|
||||
fog-profitbricks
|
||||
fog-radosgw (>= 0.0.2)
|
||||
fog-riakcs
|
||||
fog-sakuracloud (>= 0.0.4)
|
||||
fog-serverlove
|
||||
fog-softlayer
|
||||
@ -74,7 +92,7 @@ GEM
|
||||
fog-atmos (0.1.0)
|
||||
fog-core
|
||||
fog-xml
|
||||
fog-aws (0.0.7)
|
||||
fog-aws (0.5.0)
|
||||
fog-core (~> 1.27)
|
||||
fog-json (~> 1.0)
|
||||
fog-xml (~> 0.1)
|
||||
@ -83,105 +101,155 @@ GEM
|
||||
fog-core (~> 1.22)
|
||||
fog-json
|
||||
inflecto (~> 0.0.2)
|
||||
fog-core (1.27.3)
|
||||
fog-core (1.31.1)
|
||||
builder
|
||||
excon (~> 0.38)
|
||||
excon (~> 0.45)
|
||||
formatador (~> 0.2)
|
||||
mime-types
|
||||
net-scp (~> 1.1)
|
||||
net-ssh (>= 2.1.3)
|
||||
fog-ecloud (0.0.2)
|
||||
fog-ecloud (0.1.3)
|
||||
fog-core
|
||||
fog-xml
|
||||
fog-json (1.0.0)
|
||||
fog-google (0.0.5)
|
||||
fog-core
|
||||
fog-json
|
||||
fog-xml
|
||||
fog-json (1.0.1)
|
||||
fog-core (~> 1.0)
|
||||
multi_json (~> 1.0)
|
||||
fog-profitbricks (0.0.1)
|
||||
fog-local (0.2.1)
|
||||
fog-core (~> 1.27)
|
||||
fog-powerdns (0.1.1)
|
||||
fog-core (~> 1.27)
|
||||
fog-json (~> 1.0)
|
||||
fog-xml (~> 0.1)
|
||||
fog-profitbricks (0.0.3)
|
||||
fog-core
|
||||
fog-xml
|
||||
nokogiri
|
||||
fog-radosgw (0.0.3)
|
||||
fog-radosgw (0.0.4)
|
||||
fog-core (>= 1.21.0)
|
||||
fog-json
|
||||
fog-xml (>= 0.0.1)
|
||||
fog-sakuracloud (1.0.0)
|
||||
fog-riakcs (0.1.0)
|
||||
fog-core
|
||||
fog-json
|
||||
fog-serverlove (0.1.1)
|
||||
fog-xml
|
||||
fog-sakuracloud (1.0.1)
|
||||
fog-core
|
||||
fog-json
|
||||
fog-softlayer (0.3.30)
|
||||
fog-serverlove (0.1.2)
|
||||
fog-core
|
||||
fog-json
|
||||
fog-storm_on_demand (0.1.0)
|
||||
fog-softlayer (0.4.6)
|
||||
fog-core
|
||||
fog-json
|
||||
fog-terremark (0.0.3)
|
||||
fog-storm_on_demand (0.1.1)
|
||||
fog-core
|
||||
fog-json
|
||||
fog-terremark (0.1.0)
|
||||
fog-core
|
||||
fog-xml
|
||||
fog-vmfusion (0.0.1)
|
||||
fog-vmfusion (0.1.0)
|
||||
fission
|
||||
fog-core
|
||||
fog-voxel (0.0.2)
|
||||
fog-voxel (0.1.0)
|
||||
fog-core
|
||||
fog-xml
|
||||
fog-xml (0.1.1)
|
||||
fog-xml (0.1.2)
|
||||
fog-core
|
||||
nokogiri (~> 1.5, >= 1.5.11)
|
||||
formatador (0.2.5)
|
||||
gherkin (2.12.2)
|
||||
multi_json (~> 1.3)
|
||||
highline (1.6.21)
|
||||
hashie (2.1.2)
|
||||
highline (1.7.2)
|
||||
hooks (0.4.0)
|
||||
uber (~> 0.0.4)
|
||||
httpclient (2.6.0.1)
|
||||
inflecto (0.0.2)
|
||||
ipaddress (0.8.0)
|
||||
json (1.7.7)
|
||||
json (1.8.3)
|
||||
libyajl2 (1.2.0)
|
||||
method_source (0.8.2)
|
||||
mime-types (1.25.1)
|
||||
mini_portile (0.6.2)
|
||||
mixlib-authentication (1.3.0)
|
||||
mixlib-log
|
||||
mixlib-cli (1.3.0)
|
||||
mixlib-config (2.1.0)
|
||||
mixlib-cli (1.5.0)
|
||||
mixlib-config (2.2.1)
|
||||
mixlib-log (1.6.0)
|
||||
mixlib-shellout (2.0.1)
|
||||
mongo (1.11.1)
|
||||
bson (= 1.11.1)
|
||||
mixlib-shellout (2.1.0)
|
||||
mongo (1.12.3)
|
||||
bson (= 1.12.3)
|
||||
multi_json (1.7.8)
|
||||
multi_test (0.1.1)
|
||||
multi_test (0.1.2)
|
||||
net-dhcp (1.3.2)
|
||||
net-scp (1.2.1)
|
||||
net-ssh (>= 2.6.5)
|
||||
net-ssh (2.9.2)
|
||||
net-ssh-gateway (1.2.0)
|
||||
net-ssh (>= 2.6.5)
|
||||
net-ssh-multi (1.1)
|
||||
net-ssh (>= 2.1.4)
|
||||
net-ssh-gateway (>= 0.99.0)
|
||||
net-ssh-multi (1.2.1)
|
||||
net-ssh (>= 2.6.5)
|
||||
net-ssh-gateway (>= 1.2.0)
|
||||
nokogiri (1.6.6.2)
|
||||
mini_portile (~> 0.6.0)
|
||||
ohai (6.24.2)
|
||||
ohai (8.0.1)
|
||||
ffi (~> 1.9)
|
||||
ffi-yajl (~> 1.1)
|
||||
ipaddress
|
||||
mime-types (~> 1.16)
|
||||
mixlib-cli
|
||||
mixlib-config
|
||||
mixlib-config (~> 2.0)
|
||||
mixlib-log
|
||||
mixlib-shellout
|
||||
systemu (~> 2.5.2)
|
||||
yajl-ruby
|
||||
power_assert (0.2.2)
|
||||
mixlib-shellout (~> 2.0)
|
||||
net-dhcp
|
||||
rake (~> 10.1)
|
||||
systemu (~> 2.6.4)
|
||||
wmi-lite (~> 1.0)
|
||||
plist (3.1.0)
|
||||
power_assert (0.2.3)
|
||||
pry (0.10.1)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.8.1)
|
||||
slop (~> 3.4)
|
||||
rack (1.5.2)
|
||||
rack-protection (1.5.3)
|
||||
rack
|
||||
rack-test (0.6.3)
|
||||
rack (>= 1.0)
|
||||
rake (10.0.0)
|
||||
rdoc (4.2.0)
|
||||
json (~> 1.4)
|
||||
redis (3.2.0)
|
||||
redis-namespace (1.5.1)
|
||||
rake (10.2.0)
|
||||
redis (3.2.1)
|
||||
redis-namespace (1.5.2)
|
||||
redis (~> 3.0, >= 3.0.4)
|
||||
rest-client (1.6.8)
|
||||
mime-types (~> 1.16)
|
||||
rdoc (>= 2.4.2)
|
||||
rspec (3.3.0)
|
||||
rspec-core (~> 3.3.0)
|
||||
rspec-expectations (~> 3.3.0)
|
||||
rspec-mocks (~> 3.3.0)
|
||||
rspec-core (3.3.1)
|
||||
rspec-support (~> 3.3.0)
|
||||
rspec-expectations (3.3.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.3.0)
|
||||
rspec-its (1.2.0)
|
||||
rspec-core (>= 3.0.0)
|
||||
rspec-expectations (>= 3.0.0)
|
||||
rspec-mocks (3.3.1)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.3.0)
|
||||
rspec-support (3.3.0)
|
||||
rspec_junit_formatter (0.2.3)
|
||||
builder (< 4)
|
||||
rspec-core (>= 2, < 4, != 2.12.0)
|
||||
rufus-scheduler (2.0.24)
|
||||
tzinfo (>= 0.3.22)
|
||||
serverspec (2.19.0)
|
||||
multi_json
|
||||
rspec (~> 3.0)
|
||||
rspec-its
|
||||
specinfra (~> 2.35)
|
||||
sidekiq (3.2.6)
|
||||
celluloid (= 0.15.2)
|
||||
connection_pool (>= 2.0.0)
|
||||
@ -192,32 +260,37 @@ GEM
|
||||
rack (~> 1.4)
|
||||
rack-protection (~> 1.4)
|
||||
tilt (~> 1.3, >= 1.3.4)
|
||||
sinatra-contrib (1.4.2)
|
||||
sinatra-contrib (1.4.4)
|
||||
backports (>= 2.0)
|
||||
multi_json
|
||||
rack-protection
|
||||
rack-test
|
||||
sinatra (~> 1.4.0)
|
||||
tilt (~> 1.3)
|
||||
tilt (>= 1.3, < 3)
|
||||
sinatra-websocket (0.3.1)
|
||||
em-websocket (~> 0.3.6)
|
||||
eventmachine
|
||||
thin (>= 1.3.1, < 2.0.0)
|
||||
slop (3.6.0)
|
||||
systemu (2.5.2)
|
||||
test-unit (3.0.9)
|
||||
specinfra (2.36.1)
|
||||
net-scp
|
||||
net-ssh
|
||||
systemu (2.6.5)
|
||||
test-unit (3.1.2)
|
||||
power_assert
|
||||
thin (1.5.1)
|
||||
daemons (>= 1.0.9)
|
||||
eventmachine (>= 0.12.6)
|
||||
rack (>= 1.0.0)
|
||||
thread_safe (0.3.4)
|
||||
thread_safe (0.3.5)
|
||||
tilt (1.4.1)
|
||||
timers (1.1.0)
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
uber (0.0.13)
|
||||
uuidtools (2.1.5)
|
||||
wisper (1.6.0)
|
||||
yajl-ruby (1.2.1)
|
||||
wmi-lite (1.0.0)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
@ -225,17 +298,17 @@ PLATFORMS
|
||||
DEPENDENCIES
|
||||
bson_ext
|
||||
byebug
|
||||
chef (>= 11)
|
||||
chef (>= 12)
|
||||
cucumber
|
||||
devops-nibr!
|
||||
fog (~> 1.20)
|
||||
hooks
|
||||
httpclient
|
||||
mime-types (~> 1.25.1)
|
||||
mixlib-shellout
|
||||
mongo
|
||||
multi_json (= 1.7.8)
|
||||
rack (= 1.5.2)
|
||||
rake (= 10.0.0)
|
||||
rake (= 10.2.0)
|
||||
rufus-scheduler (= 2.0.24)
|
||||
sidekiq (= 3.2.6)
|
||||
sinatra (= 1.4.3)
|
||||
|
||||
@ -2,9 +2,9 @@ require 'sinatra/base'
|
||||
|
||||
class Client < Sinatra::Base
|
||||
|
||||
def initialize config
|
||||
def initialize
|
||||
super()
|
||||
@@config = config
|
||||
@@config = DevopsConfig.config
|
||||
end
|
||||
|
||||
# Route to download devops client
|
||||
@ -30,3 +30,4 @@ class Client < Sinatra::Base
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
87
devops-service/app/devops-api2.rb
Normal file
87
devops-service/app/devops-api2.rb
Normal file
@ -0,0 +1,87 @@
|
||||
module Devops
|
||||
module Application
|
||||
class DevopsApi2Application < Application
|
||||
|
||||
def prepare
|
||||
require "routes/v2.0"
|
||||
require "routes/v2.0/handlers/provider"
|
||||
require "routes/v2.0/handlers/bootstrap_templates"
|
||||
require "routes/v2.0/handlers/deploy"
|
||||
require "routes/v2.0/handlers/filter"
|
||||
require "routes/v2.0/handlers/flavor"
|
||||
require "routes/v2.0/handlers/group"
|
||||
require "routes/v2.0/handlers/image"
|
||||
require "routes/v2.0/handlers/network"
|
||||
require "routes/v2.0/handlers/key"
|
||||
require "routes/v2.0/handlers/project"
|
||||
require "routes/v2.0/handlers/script"
|
||||
require "routes/v2.0/handlers/status"
|
||||
require "routes/v2.0/handlers/tag"
|
||||
require "routes/v2.0/handlers/user"
|
||||
require "routes/v2.0/handlers/server"
|
||||
require "routes/v2.0/handlers/stack_template"
|
||||
require "routes/v2.0/handlers/stack"
|
||||
end
|
||||
|
||||
def init
|
||||
config = DevopsConfig.config
|
||||
Devops::Api2.set :devops_home, config[:devops_dir]
|
||||
#set :config, config
|
||||
|
||||
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
|
||||
Devops::Api2.settings.mongo.create_root_user
|
||||
::Provider::ProviderFactory.init(config)
|
||||
#set_up_providers_keys!(::Provider::ProviderFactory.all, mongo)
|
||||
|
||||
end
|
||||
|
||||
def routes
|
||||
require "routes/v2.0/flavor"
|
||||
require "routes/v2.0/image"
|
||||
require "routes/v2.0/filter"
|
||||
require "routes/v2.0/network"
|
||||
require "routes/v2.0/group"
|
||||
require "routes/v2.0/deploy"
|
||||
require "routes/v2.0/project"
|
||||
require "routes/v2.0/key"
|
||||
require "routes/v2.0/user"
|
||||
require "routes/v2.0/provider"
|
||||
require "routes/v2.0/tag"
|
||||
require "routes/v2.0/server"
|
||||
require "routes/v2.0/script"
|
||||
require "routes/v2.0/status"
|
||||
require "routes/v2.0/bootstrap_templates"
|
||||
require "routes/v2.0/stack_template"
|
||||
require "routes/v2.0/stack"
|
||||
|
||||
routes = Devops::Version2_0::Routes.constants.collect{|s| Devops::Version2_0::Routes.const_get(s)}.select {|const| const.class == Module}
|
||||
routes.each do |r|
|
||||
Devops::Api2.register r
|
||||
end
|
||||
Routes.route "/v2.0", Devops::Api2
|
||||
end
|
||||
|
||||
private
|
||||
def init_mongo
|
||||
Devops::Api2.set :mongo, Devops::Db.connector
|
||||
end
|
||||
|
||||
def set_up_providers_keys!(providers, mongo)
|
||||
providers.each do |provider|
|
||||
next if provider.certificate_path.nil?
|
||||
begin
|
||||
mongo.key provider.ssh_key, Key::SYSTEM
|
||||
rescue RecordNotFound => e
|
||||
k = Key.new({"id" => provider.ssh_key, "path" => provider.certificate_path, "scope" => Key::SYSTEM})
|
||||
mongo.key_insert k
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
28
devops-service/app/devops-application.rb
Normal file
28
devops-service/app/devops-application.rb
Normal file
@ -0,0 +1,28 @@
|
||||
module Devops
|
||||
module Application
|
||||
class Application
|
||||
|
||||
@@applications = []
|
||||
|
||||
def self.inherited(base)
|
||||
@@applications << base.new
|
||||
puts "Devops application '#{base}' has been added"
|
||||
end
|
||||
|
||||
def self.applications
|
||||
@@applications
|
||||
end
|
||||
|
||||
def prepare
|
||||
|
||||
end
|
||||
|
||||
def init
|
||||
|
||||
end
|
||||
|
||||
def routes
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
14
devops-service/app/devops-client.rb
Normal file
14
devops-service/app/devops-client.rb
Normal file
@ -0,0 +1,14 @@
|
||||
module Devops
|
||||
module Application
|
||||
class DevopsClientApplication < Application
|
||||
|
||||
def prepare
|
||||
require "app/client/devops-client"
|
||||
end
|
||||
|
||||
def routes
|
||||
Routes.route "/client", ::Client.new
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
15
devops-service/app/devops-version.rb
Normal file
15
devops-service/app/devops-version.rb
Normal file
@ -0,0 +1,15 @@
|
||||
module Devops
|
||||
module Application
|
||||
class DevopsVersionApplication < Application
|
||||
|
||||
def prepare
|
||||
require "app/version/version"
|
||||
end
|
||||
|
||||
def routes
|
||||
Routes.route "/version", ::DevopsVersion.new
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
17
devops-service/app/sidekiq_web.rb
Normal file
17
devops-service/app/sidekiq_web.rb
Normal file
@ -0,0 +1,17 @@
|
||||
module Devops
|
||||
module Application
|
||||
|
||||
class SidekiqApplication < Application
|
||||
|
||||
def prepare
|
||||
require "sidekiq/web"
|
||||
end
|
||||
|
||||
def routes
|
||||
Devops::Routes.route "/sidekiq", Sidekiq::Web
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -6,7 +6,7 @@ require 'byebug'
|
||||
|
||||
require_relative "devops-service"
|
||||
require_relative "devops_config"
|
||||
require_relative "routes"
|
||||
require_relative "devops-routes"
|
||||
|
||||
root = File.dirname(__FILE__)
|
||||
|
||||
@ -26,4 +26,10 @@ config[:report_dir_v2] = File.expand_path(File.join(config[:devops_dir], "report
|
||||
].each {|key| d = config[key]; FileUtils.mkdir_p(d) unless File.exists?(d) }
|
||||
|
||||
DevopsService.init
|
||||
run Rack::URLMap.new(Devops::Routes.routes)
|
||||
puts Devops::Routes.routes
|
||||
Devops::Routes.routes.each do |p, c|
|
||||
map(p) do
|
||||
run c
|
||||
end
|
||||
end
|
||||
#run Rack::URLMap.new(Devops::Routes.routes)
|
||||
|
||||
@ -8,16 +8,18 @@ require "db/validators/all"
|
||||
require "db/mongo/mongo_connector"
|
||||
require "providers/provider_factory"
|
||||
|
||||
require "loader"
|
||||
require "devops_db"
|
||||
|
||||
require "sidekiq/web"
|
||||
require "fog"
|
||||
|
||||
require "loader"
|
||||
require "devops_db"
|
||||
require_relative "routes/v2.0"
|
||||
require_relative "client"
|
||||
require_relative "report"
|
||||
require_relative "version"
|
||||
|
||||
require "hooks"
|
||||
require "app/devops-application"
|
||||
require "app/devops-client"
|
||||
require "app/sidekiq_web"
|
||||
require "app/devops-version"
|
||||
require "app/devops-api2"
|
||||
|
||||
require_relative "sinatra/methods_with_headers"
|
||||
|
||||
@ -30,11 +32,7 @@ class DevopsService
|
||||
def routes
|
||||
config = DevopsConfig.config
|
||||
Devops::Routes.preffix = config[:url_prefix]
|
||||
Devops::Routes.route "/version", DevopsVersion
|
||||
Devops::Routes.route "/v2.0", Devops::Version2_0::Application
|
||||
Devops::Routes.route "/client", Client.new(config)
|
||||
Devops::Routes.route "/v2.0/report", ReportRoutes.new(config, "v2")
|
||||
Devops::Routes.route "/sidekiq", Sidekiq::Web
|
||||
#require_relative "routes/routes.rb"
|
||||
end
|
||||
|
||||
# steps:
|
||||
@ -48,15 +46,34 @@ class DevopsService
|
||||
def init
|
||||
# init database
|
||||
Devops::Db.init
|
||||
# init plugins
|
||||
routes
|
||||
apps = Devops::Application::Application.applications
|
||||
apps.each do |a|
|
||||
a.prepare
|
||||
end
|
||||
|
||||
Devops::Loader.load_plugins
|
||||
apps.each do |a|
|
||||
a.init
|
||||
end
|
||||
Devops::Loader.init_plugins
|
||||
apps.each do |a|
|
||||
a.routes
|
||||
end
|
||||
Devops::Loader.routes
|
||||
=begin
|
||||
Devops::Version2_0::Application.load
|
||||
Devops::Loader.load_plugins
|
||||
# init routes classes
|
||||
Devops::Version2_0::Application.init
|
||||
# init plugins
|
||||
Devops::Loader.init_plugins
|
||||
Devops::Version2_0::Application.register_routes
|
||||
# init routes paths
|
||||
routes
|
||||
# add plugins routes
|
||||
Devops::Loader.routes
|
||||
=end
|
||||
end
|
||||
|
||||
def debug?
|
||||
|
||||
@ -2,7 +2,7 @@ module Devops
|
||||
module Loader
|
||||
|
||||
class << self
|
||||
def init_plugins
|
||||
def load_plugins
|
||||
plugins do |plugin|
|
||||
plugin.init
|
||||
end
|
||||
|
||||
@ -1,89 +0,0 @@
|
||||
require 'sinatra/base'
|
||||
|
||||
class ReportRoutes < Sinatra::Base
|
||||
|
||||
def initialize config, version
|
||||
super()
|
||||
@@config = config
|
||||
end
|
||||
|
||||
enable :inline_templates
|
||||
|
||||
get "/all" do
|
||||
options = {}
|
||||
["project", "deploy_env", "type", "created_by", "date_from", "date_to", "sort", "status"].each do |k|
|
||||
options[k] = params[k] unless params[k].nil?
|
||||
end
|
||||
json Devops::Db.connector.reports(options).map{|r| r.to_hash}
|
||||
=begin
|
||||
res = {}
|
||||
uri = URI.parse(request.url)
|
||||
pref = File.dirname(uri.path)
|
||||
@paths.each do |key, dir|
|
||||
files = []
|
||||
Dir[File.join(dir, "/**/*")].each do |f|
|
||||
next if File.directory?(f)
|
||||
jid = File.basename(f)
|
||||
uri.path = File.join(pref, key, f[dir.length..-1])
|
||||
o = {
|
||||
"file" => uri.to_s,
|
||||
"created" => File.ctime(f).to_s,
|
||||
"status" => task_status(jid)
|
||||
}
|
||||
files.push o
|
||||
end
|
||||
res[key] = files
|
||||
end
|
||||
json res
|
||||
=end
|
||||
end
|
||||
|
||||
get "/:id" do
|
||||
r = Devops::Db.connector.report(params[:id])
|
||||
file = r.file
|
||||
return [404, "Report '#{params[:id]}' does not exist"] unless File.exists? file
|
||||
@text = File.read(file)
|
||||
@done = completed?(params[:id])
|
||||
erb :index
|
||||
end
|
||||
|
||||
get "/favicon.ico" do
|
||||
[404, ""]
|
||||
end
|
||||
|
||||
def completed? id
|
||||
r = task_status(id)
|
||||
r == "completed" or r == "failed"
|
||||
end
|
||||
|
||||
def task_status id
|
||||
r = Sidekiq.redis do |connection|
|
||||
connection.hget("devops", id)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
__END__
|
||||
|
||||
@@ layout
|
||||
<html>
|
||||
<head>
|
||||
<% unless @done %>
|
||||
<script>
|
||||
function reload() {
|
||||
location.reload();
|
||||
}
|
||||
setTimeout(reload, 5000);
|
||||
</script>
|
||||
<% end %>
|
||||
</head>
|
||||
<body>
|
||||
<%= yield %>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ index
|
||||
<pre>
|
||||
<%= @text %>
|
||||
</pre>
|
||||
4
devops-service/routes/routes.rb
Normal file
4
devops-service/routes/routes.rb
Normal file
@ -0,0 +1,4 @@
|
||||
require_relative "sidekiq_web"
|
||||
require_relative "devops_version"
|
||||
require_relative "devops-client"
|
||||
require_relative "api_v2"
|
||||
@ -1,12 +0,0 @@
|
||||
module Devops
|
||||
module RoutesContainer
|
||||
|
||||
def register_routes
|
||||
routes = Devops::Version2_0::Routes.constants.collect{|s| Devops::Version2_0::Routes.const_get(s)}.select {|const| const.class == Module}
|
||||
routes.each do |r|
|
||||
register r
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
@ -3,106 +3,10 @@ require "sinatra/streaming"
|
||||
require "helpers/version_2"
|
||||
require "json"
|
||||
|
||||
require "routes/v2.0/flavor"
|
||||
require "routes/v2.0/image"
|
||||
require "routes/v2.0/filter"
|
||||
require "routes/v2.0/network"
|
||||
require "routes/v2.0/group"
|
||||
require "routes/v2.0/deploy"
|
||||
require "routes/v2.0/project"
|
||||
require "routes/v2.0/key"
|
||||
require "routes/v2.0/user"
|
||||
require "routes/v2.0/provider"
|
||||
require "routes/v2.0/tag"
|
||||
require "routes/v2.0/server"
|
||||
require "routes/v2.0/script"
|
||||
require "routes/v2.0/status"
|
||||
require "routes/v2.0/bootstrap_templates"
|
||||
require "routes/v2.0/stack_template"
|
||||
require "routes/v2.0/stack"
|
||||
|
||||
require "routes/v2.0/handlers/provider"
|
||||
require "routes/v2.0/handlers/bootstrap_templates"
|
||||
require "routes/v2.0/handlers/deploy"
|
||||
require "routes/v2.0/handlers/filter"
|
||||
require "routes/v2.0/handlers/flavor"
|
||||
require "routes/v2.0/handlers/group"
|
||||
require "routes/v2.0/handlers/image"
|
||||
require "routes/v2.0/handlers/network"
|
||||
require "routes/v2.0/handlers/key"
|
||||
require "routes/v2.0/handlers/project"
|
||||
require "routes/v2.0/handlers/script"
|
||||
require "routes/v2.0/handlers/status"
|
||||
require "routes/v2.0/handlers/tag"
|
||||
require "routes/v2.0/handlers/user"
|
||||
require "routes/v2.0/handlers/server"
|
||||
require "routes/v2.0/handlers/stack_template"
|
||||
require "routes/v2.0/handlers/stack"
|
||||
require "routes/routes_container"
|
||||
|
||||
require "auth/devops_auth"
|
||||
|
||||
module Devops
|
||||
module Version2_0
|
||||
class Application < Sinatra::Base
|
||||
|
||||
extend Devops::RoutesContainer
|
||||
|
||||
class << self
|
||||
|
||||
@routes = [
|
||||
Devops::Version2_0::Routes::ProviderRoutes,
|
||||
Devops::Version2_0::Routes::BootstrapTemplatesRoutes,
|
||||
Devops::Version2_0::Routes::UserRoutes,
|
||||
Devops::Version2_0::Routes::FilterRoutes,
|
||||
Devops::Version2_0::Routes::FlavorRoutes,
|
||||
Devops::Version2_0::Routes::GroupRoutes,
|
||||
Devops::Version2_0::Routes::ImageRoutes,
|
||||
Devops::Version2_0::Routes::KeyRoutes,
|
||||
Devops::Version2_0::Routes::NetworkRoutes,
|
||||
Devops::Version2_0::Routes::ProjectRoutes,
|
||||
Devops::Version2_0::Routes::ScriptRoutes,
|
||||
Devops::Version2_0::Routes::ServerRoutes,
|
||||
Devops::Version2_0::Routes::StatusRoutes,
|
||||
Devops::Version2_0::Routes::TagRoutes,
|
||||
Devops::Version2_0::Routes::DeployRoutes,
|
||||
Devops::Version2_0::Routes::StackTemplateRoutes,
|
||||
Devops::Version2_0::Routes::StackRoutes
|
||||
]
|
||||
|
||||
def init
|
||||
config = DevopsConfig.config
|
||||
set :devops_home, config[:devops_dir]
|
||||
#set :config, config
|
||||
|
||||
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"))
|
||||
[:keys_dir, :scripts_dir].each {|key| d = settings.send(key); FileUtils.mkdir_p(d) unless File.exists?(d) }
|
||||
init_mongo
|
||||
settings.mongo.create_root_user
|
||||
::Provider::ProviderFactory.init(config)
|
||||
#set_up_providers_keys!(::Provider::ProviderFactory.all, mongo)
|
||||
|
||||
end
|
||||
|
||||
def init_mongo
|
||||
set :mongo, Devops::Db.connector
|
||||
end
|
||||
|
||||
private
|
||||
def set_up_providers_keys!(providers, mongo)
|
||||
providers.each do |provider|
|
||||
next if provider.certificate_path.nil?
|
||||
begin
|
||||
mongo.key provider.ssh_key, Key::SYSTEM
|
||||
rescue RecordNotFound => e
|
||||
k = Key.new({"id" => provider.ssh_key, "path" => provider.certificate_path, "scope" => Key::SYSTEM})
|
||||
mongo.key_insert k
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
class Api2 < Sinatra::Base
|
||||
|
||||
include Sinatra::JSON
|
||||
helpers Sinatra::Streaming
|
||||
@ -125,7 +29,7 @@ module Devops
|
||||
disable :dump_errors
|
||||
disable :show_exceptions
|
||||
set :logging, Logger::INFO
|
||||
puts "TODO2"
|
||||
puts "Production mode"
|
||||
end
|
||||
|
||||
configure :development do
|
||||
@ -133,7 +37,7 @@ module Devops
|
||||
disable :raise_errors
|
||||
# disable :dump_errors
|
||||
set :show_exceptions, :after_handler
|
||||
puts "TODO1"
|
||||
puts "Development mode"
|
||||
end
|
||||
|
||||
not_found do
|
||||
@ -210,5 +114,4 @@ module Devops
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user