stack
This commit is contained in:
parent
e05e5e8ada
commit
5d41044272
@ -1,22 +1,20 @@
|
||||
require_relative "request_handler"
|
||||
|
||||
module Devops
|
||||
module API2_0
|
||||
module Handler
|
||||
class Filter
|
||||
class Filter < RequestHandler
|
||||
|
||||
def initialize provider
|
||||
@provider = provider
|
||||
def available_images provider
|
||||
Devops::Db.connector.available_images(provider)
|
||||
end
|
||||
|
||||
def available_images
|
||||
Devops::Db.connector.available_images(@provider)
|
||||
def add_images images, provider
|
||||
Devops::Db.connector.add_available_images(images, provider)
|
||||
end
|
||||
|
||||
def add_images images
|
||||
Devops::Db.connector.add_available_images(images, @provider)
|
||||
end
|
||||
|
||||
def delete_images images
|
||||
Devops::Db.connector.delete_available_images(images, @provider)
|
||||
def delete_images images, provider
|
||||
Devops::Db.connector.delete_available_images(images, provider)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
require_relative "request_handler"
|
||||
|
||||
module Devops
|
||||
module Version2_0
|
||||
module API2_0
|
||||
module Handler
|
||||
class Report < RequestHandler
|
||||
|
||||
|
||||
@ -1,60 +1,36 @@
|
||||
require 'db/mongo/models/stack/stack_factory'
|
||||
require_relative "request_handler"
|
||||
|
||||
module Devops
|
||||
module Version2_0
|
||||
module API2_0
|
||||
module Handler
|
||||
class Stack
|
||||
class Stack < RequestHandler
|
||||
|
||||
def self.get_stacks
|
||||
lambda {
|
||||
check_privileges("stack", "r")
|
||||
stacks = settings.mongo.stacks
|
||||
json stacks.map(&:to_hash)
|
||||
}
|
||||
def stacks
|
||||
Devops::Db.connector.stacks
|
||||
end
|
||||
|
||||
def self.get_stacks_for_provider
|
||||
lambda {
|
||||
check_privileges("stack", "r")
|
||||
check_provider(params[:provider])
|
||||
stacks = settings.mongo.stacks(params[:provider])
|
||||
json stacks.map(&:to_hash)
|
||||
}
|
||||
def stacks_for_provider
|
||||
Devops::Db.connector.stacks(@params[:provider])
|
||||
end
|
||||
|
||||
def self.create_stack
|
||||
lambda {
|
||||
check_privileges("stack", "w")
|
||||
|
||||
object = create_object_from_json_body
|
||||
stack_model = Model::StackFactory.create(object['provider'], object)
|
||||
settings.mongo.stack_insert(stack_model)
|
||||
|
||||
create_response "Created", stack_model.to_hash, 201
|
||||
}
|
||||
def create_stack object
|
||||
stack_model = Model::StackFactory.create(object['provider'], object)
|
||||
Devops::Db.connector.stack_insert(stack_model)
|
||||
stack_model
|
||||
end
|
||||
|
||||
def self.get_stack
|
||||
lambda {
|
||||
check_privileges("stack", "r")
|
||||
stack = settings.mongo.stack(params[:stack_id])
|
||||
json stack.to_hash
|
||||
}
|
||||
def stack id
|
||||
Devops::Db.connector.stack(id)
|
||||
end
|
||||
|
||||
def self.delete_stack
|
||||
lambda {
|
||||
check_privileges("stack", "w")
|
||||
|
||||
stack = settings.mongo.stack(params[:stack_id])
|
||||
stack.delete_stack_in_cloud!
|
||||
settings.mongo.stack_delete(params[:stack_id])
|
||||
|
||||
create_response("Stack '#{params[:stack_id]}' has been removed")
|
||||
}
|
||||
def delete_stack id
|
||||
stack = self.stack(id)
|
||||
stack.delete_stack_in_cloud!
|
||||
Devops::Db.connector.stack_delete(id)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,57 +1,34 @@
|
||||
require 'db/mongo/models/stack_template/stack_template_factory'
|
||||
require_relative "request_handler"
|
||||
|
||||
module Devops
|
||||
module Version2_0
|
||||
module API2_0
|
||||
module Handler
|
||||
class StackTemplate
|
||||
class StackTemplate < RequestHandler
|
||||
|
||||
def self.get_stack_templates
|
||||
lambda {
|
||||
check_privileges('stack_template', 'r')
|
||||
stack_templates = settings.mongo.stack_templates
|
||||
json stack_templates.map(&:to_hash)
|
||||
}
|
||||
def stack_templates
|
||||
Devops::Db.connector.stack_templates
|
||||
end
|
||||
|
||||
def self.get_stack_templates_for_provider
|
||||
lambda {
|
||||
check_privileges('stack_template', 'r')
|
||||
check_provider(params[:provider])
|
||||
stack_templates = settings.mongo.stack_templates(params[:provider])
|
||||
json stack_templates.map(&:to_hash)
|
||||
}
|
||||
def stack_templates_for_provider provider
|
||||
Devops::Db.connector.stack_templates(provider)
|
||||
end
|
||||
|
||||
def self.create_stack_template
|
||||
lambda {
|
||||
check_privileges('stack_template', 'w')
|
||||
|
||||
attrs = create_object_from_json_body
|
||||
template_model = Model::StackTemplateFactory.create(attrs['provider'], attrs)
|
||||
|
||||
settings.mongo.stack_template_insert(template_model)
|
||||
create_response 'Created', template_model.to_hash, 201
|
||||
}
|
||||
def create_stack_template body
|
||||
template_model = Model::StackTemplateFactory.create(body['provider'], body)
|
||||
Devops::Db.connector.stack_template_insert(template_model)
|
||||
template_model
|
||||
end
|
||||
|
||||
def self.get_stack_template
|
||||
lambda {
|
||||
check_privileges('stack_template', 'r')
|
||||
stack_template = settings.mongo.stack_template(params[:stack_template_id])
|
||||
json stack_template.to_hash
|
||||
}
|
||||
def get_stack_template id
|
||||
Devops::Db.connector.stack_template(id)
|
||||
end
|
||||
|
||||
def self.delete_stack_template
|
||||
lambda {
|
||||
check_privileges('stack_template', 'w')
|
||||
|
||||
settings.mongo.stack_template_delete params[:stack_template_id]
|
||||
create_response("Template '#{params[:stack_template_id]}' has been removed")
|
||||
}
|
||||
def delete_stack_template id
|
||||
Devops::Db.connector.stack_template_delete id
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,39 +1,25 @@
|
||||
require 'json'
|
||||
require 'lib/stack_template_presets/factory'
|
||||
require_relative "request_handler"
|
||||
|
||||
module Devops
|
||||
module Version2_0
|
||||
module API2_0
|
||||
module Handler
|
||||
class StackTemplatePreset
|
||||
class StackTemplatePreset < RequestHandler
|
||||
|
||||
def self.get_presets
|
||||
lambda {
|
||||
# check_privileges("stack_template_presets", "r")
|
||||
json Devops::StackTemplatePresetsFactory.list.map(&:to_hash)
|
||||
}
|
||||
def templates
|
||||
Devops::StackTemplatePresetsFactory.list
|
||||
end
|
||||
|
||||
def self.get_preset
|
||||
lambda {
|
||||
# check_privileges("stack_template_presets", "r")
|
||||
json Devops::StackTemplatePresetsFactory.get(params['id']).to_hash
|
||||
}
|
||||
def template id
|
||||
Devops::StackTemplatePresetsFactory.get(id)
|
||||
end
|
||||
|
||||
def self.build_stack_template
|
||||
lambda {
|
||||
# check_privileges("stack_template_presets", "r")
|
||||
check_privileges('stack_template', 'w')
|
||||
def build_stack_template id, body
|
||||
provider, stack_id, parameters = body.fetch('provider'), body.fetch('stack'), body.fetch('parameters')
|
||||
|
||||
attrs = create_object_from_json_body
|
||||
|
||||
provider, stack_id, parameters = attrs.fetch('provider'), attrs.fetch('stack'), attrs.fetch('parameters')
|
||||
|
||||
preset = Devops::StackTemplatePresetsFactory.get(attrs.fetch('id'))
|
||||
stack = preset.create_stack_from_preset(provider, stack_id, parameters)
|
||||
|
||||
create_response 'Created', stack.to_hash, 201
|
||||
}
|
||||
preset = Devops::StackTemplatePresetsFactory.get(id)
|
||||
preset.create_stack_from_preset(provider, stack_id, parameters)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@ -23,11 +23,10 @@ module Devops
|
||||
# [
|
||||
# "36dc7618-4178-4e29-be43-286fbfe90f50"
|
||||
# ]
|
||||
app.get_with_headers "/filter/:provider/images", :headers => [:accept] do#, &Devops::API2_0::Handler::Filter.get_filters
|
||||
app.get_with_headers "/filter/:provider/images", :headers => [:accept] do |provider|
|
||||
check_privileges("filter", "r")
|
||||
provider = params[:provider]
|
||||
check_provider(provider)
|
||||
json Devops::API2_0::Handler::Filter.new(provider).available_images
|
||||
json Devops::API2_0::Handler::Filter.new(request, params).available_images(provider)
|
||||
end
|
||||
|
||||
hash = {}
|
||||
@ -45,14 +44,13 @@ module Devops
|
||||
# ] -> array of image ids to add to filter
|
||||
#
|
||||
# * *Returns* : list of images filters for :provider
|
||||
hash["PUT"] = lambda { #Devops::API2_0::Handler::Filter.add_filter
|
||||
hash["PUT"] = lambda { |provider|
|
||||
check_privileges("filter", "w")
|
||||
provider = params[:provider]
|
||||
check_provider(provider)
|
||||
images = create_object_from_json_body(Array)
|
||||
halt_response("Request body should not be an empty array") if images.empty?
|
||||
check_array(images, "Request body should contains an array with strings")
|
||||
create_response("Updated", {:images => Devops::API2_0::Handler::Filter.new(provider).add_images(images)})
|
||||
create_response("Updated", {:images => Devops::API2_0::Handler::Filter.new(request, params).add_images(images, provider)})
|
||||
}
|
||||
|
||||
# Delete image ids from filter for :provider
|
||||
@ -68,14 +66,13 @@ module Devops
|
||||
# ] -> array of image ids to delete from filter
|
||||
#
|
||||
# * *Returns* : list of images filters for :provider
|
||||
hash["DELETE"] = lambda {#Devops::API2_0::Handler::Filter.delete_filter
|
||||
hash["DELETE"] = lambda { |provider|
|
||||
check_privileges("filter", "w")
|
||||
provider = params[:provider]
|
||||
check_provider(provider)
|
||||
images = create_object_from_json_body(Array)
|
||||
halt_response("Request body should not be an empty array") if images.empty?
|
||||
check_array(images, "Request body should contains an array with strings")
|
||||
create_response("Deleted", {:images => Devops::API2_0::Handler::Filter.new(provider).delete_images(images)})
|
||||
create_response("Deleted", {:images => Devops::API2_0::Handler::Filter.new(request, params).delete_images(images, provider)})
|
||||
}
|
||||
|
||||
app.multi_routes "/filter/:provider/image", {:headers => [:accept, :content_type]}, hash
|
||||
|
||||
@ -1,26 +1,42 @@
|
||||
module Devops
|
||||
module Version2_0
|
||||
module API2_0
|
||||
module Routes
|
||||
module StackRoutes
|
||||
|
||||
def self.registered(app)
|
||||
app.after %r{\A/stack_template(/[\w]+)?\z} do
|
||||
statistic
|
||||
|
||||
app.get_with_headers '/stacks', :headers => [:accept] do
|
||||
check_privileges("stack", "r")
|
||||
json Devops::API2_0::Handler::Stack.new(request, params).stacks.map(&:to_hash)
|
||||
end
|
||||
|
||||
app.get_with_headers '/stacks', :headers => [:accept], &Devops::Version2_0::Handler::Stack.get_stacks
|
||||
app.get_with_headers '/stacks/provider/:provider', :headers => [:accept] do |provider|
|
||||
check_privileges("stack", "r")
|
||||
check_provider(provider)
|
||||
json Devops::API2_0::Handler::Stack.new(request, params).stacks_for_provider.map(&:to_hash)
|
||||
end
|
||||
|
||||
app.get_with_headers '/stacks/provider/:provider', :headers => [:accept], &Devops::Version2_0::Handler::Stack.get_stacks_for_provider
|
||||
|
||||
app.post_with_headers "/stack", :headers => [:accept], &Devops::Version2_0::Handler::Stack.create_stack
|
||||
app.post_with_headers "/stack", :headers => [:accept] do
|
||||
check_privileges("stack", "w")
|
||||
object = create_object_from_json_body
|
||||
m = Devops::API2_0::Handler::Stack.new(request, params).create_stack object
|
||||
create_response "Created", m.to_hash, 201
|
||||
end
|
||||
|
||||
hash = {}
|
||||
|
||||
hash['GET'] = Devops::Version2_0::Handler::Stack.get_stack
|
||||
hash['GET'] = lambda { |stack_id|
|
||||
check_privileges("stack", "r")
|
||||
json Devops::API2_0::Handler::Stack.new(request, params).stack(stack_id).to_hash
|
||||
}
|
||||
|
||||
hash['DELETE'] = Devops::Version2_0::Handler::Stack.delete_stack
|
||||
hash['DELETE'] = lambda { |stack_id|
|
||||
check_privileges("stack", "w")
|
||||
Devops::API2_0::Handler::Stack.new(request, params).delete_stack(stack_id)
|
||||
create_response("Stack '#{stack_id}' has been removed")
|
||||
}
|
||||
|
||||
app.multi_routes '/stack/:stack_id', {}, hash
|
||||
app.multi_routes '/stack/:stack_id', {:headers => [:accept]}, hash
|
||||
|
||||
puts "Stack routes initialized"
|
||||
end
|
||||
@ -28,4 +44,4 @@ module Devops
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,24 +1,39 @@
|
||||
module Devops
|
||||
module Version2_0
|
||||
module API2_0
|
||||
module Routes
|
||||
module StackTemplateRoutes
|
||||
|
||||
def self.registered(app)
|
||||
app.after %r{\A/stack_template(/[\w]+)?\z} do
|
||||
statistic
|
||||
app.get_with_headers '/stack_templates', :headers => [:accept] do
|
||||
check_privileges('stack_template', 'r')
|
||||
json Devops::API2_0::Handler::StackTemplate.new(request, params).stack_templates.map(&:to_hash)
|
||||
end
|
||||
|
||||
app.get_with_headers '/stack_templates', :headers => [:accept], &Devops::Version2_0::Handler::StackTemplate.get_stack_templates
|
||||
app.get_with_headers '/stack_templates/provider/:provider', :headers => [:accept] do |provider|
|
||||
check_privileges('stack_template', 'r')
|
||||
check_provider(provider)
|
||||
json Devops::API2_0::Handler::StackTemplate.new(request, params).stack_templates_for_provider(provider).map(&:to_hash)
|
||||
end
|
||||
|
||||
app.get_with_headers '/stack_templates/provider/:provider', :headers => [:accept], &Devops::Version2_0::Handler::StackTemplate.get_stack_templates_for_provider
|
||||
|
||||
app.post_with_headers "/stack_template", :headers => [:accept], &Devops::Version2_0::Handler::StackTemplate.create_stack_template
|
||||
app.post_with_headers "/stack_template", :headers => [:accept] do
|
||||
check_privileges('stack_template', 'w')
|
||||
body = create_object_from_json_body
|
||||
model = Devops::API2_0::Handler::StackTemplate.new(request, params).create_stack_template(body)
|
||||
create_response 'Created', model.to_hash, 201
|
||||
end
|
||||
|
||||
hash = {}
|
||||
|
||||
hash['GET'] = Devops::Version2_0::Handler::StackTemplate.get_stack_template
|
||||
hash['GET'] = lambda {|stack_template_id|
|
||||
check_privileges('stack_template', 'r')
|
||||
json Devops::API2_0::Handler::StackTemplate.new(request, params).stack_template(stack_template_id).to_hash
|
||||
}
|
||||
|
||||
hash['DELETE'] = Devops::Version2_0::Handler::StackTemplate.delete_stack_template
|
||||
hash['DELETE'] = lambda {|stack_template_id|
|
||||
check_privileges('stack_template', 'w')
|
||||
Devops::API2_0::Handler::StackTemplate.new(request, params).delete_stack_template(stack_template_id)
|
||||
create_response("Template '#{stack_template_id}' has been removed")
|
||||
}
|
||||
|
||||
app.multi_routes '/stack_template/:stack_template_id', {}, hash
|
||||
|
||||
@ -28,4 +43,4 @@ module Devops
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
module Devops
|
||||
module Version2_0
|
||||
module API2_0
|
||||
module Routes
|
||||
module StackTemplatePresetRoutes
|
||||
|
||||
@ -14,8 +14,10 @@ module Devops
|
||||
# * *Returns* : array of hashes
|
||||
# [ {id: 'preset id', template_preset_body: 'long body'} ]
|
||||
#
|
||||
app.get_with_headers "/stack_template_presets", :headers => [:accept], &Devops::Version2_0::Handler::StackTemplatePreset.get_presets
|
||||
|
||||
app.get_with_headers "/stack_template_presets", :headers => [:accept] do
|
||||
# check_privileges("stack_template_presets", "r")
|
||||
json Devops::API2_0::Handler::StackTemplatePreset.new(request, params).templates.map(&:to_hash)
|
||||
end
|
||||
|
||||
# Get information about stack_template_preset
|
||||
#
|
||||
@ -27,8 +29,10 @@ module Devops
|
||||
# * *Returns* : hash
|
||||
# {id: 'preset id', template_preset_body: 'long body'}
|
||||
#
|
||||
app.get_with_headers "/stack_template_presets/:id", :headers => [:accept], &Devops::Version2_0::Handler::StackTemplatePreset.get_preset
|
||||
|
||||
app.get_with_headers "/stack_template_presets/:id", :headers => [:accept] do |id|
|
||||
# check_privileges("stack_template_presets", "r")
|
||||
json Devops::API2_0::Handler::StackTemplatePreset.new(request, params).template(id).to_hash
|
||||
end
|
||||
|
||||
# Build stack template from preset
|
||||
#
|
||||
@ -50,7 +54,13 @@ module Devops
|
||||
# template_body: 'long body'
|
||||
# }
|
||||
#
|
||||
app.post_with_headers "/stack_template_presets/:id/build_stack_template", :headers => [:accept], &Devops::Version2_0::Handler::StackTemplatePreset.build_stack_template
|
||||
app.post_with_headers "/stack_template_presets/:id/build_stack_template", :headers => [:accept] do |id|
|
||||
# check_privileges("stack_template_presets", "r")
|
||||
check_privileges('stack_template', 'w')
|
||||
body = create_object_from_json_body
|
||||
stack = Devops::API2_0::Handler::StackTemplatePreset.new(request, params).build_stack_template(id, body)
|
||||
create_response 'Created', stack.to_hash, 201
|
||||
end
|
||||
|
||||
puts "Stack template presets routes initialized"
|
||||
end
|
||||
|
||||
@ -11,6 +11,10 @@ module Devops
|
||||
require_relative "api2/handlers/report"
|
||||
require_relative "api2/handlers/deploy"
|
||||
require_relative "api2/handlers/script"
|
||||
|
||||
require_relative "api2/handlers/stack"
|
||||
require_relative "api2/handlers/stack_template"
|
||||
require_relative "api2/handlers/stack_template_preset"
|
||||
=begin
|
||||
require "routes/v2.0/handlers/bootstrap_templates"
|
||||
require "routes/v2.0/handlers/image"
|
||||
@ -19,9 +23,6 @@ module Devops
|
||||
require "routes/v2.0/handlers/project"
|
||||
require "routes/v2.0/handlers/tag"
|
||||
require "routes/v2.0/handlers/server"
|
||||
require "routes/v2.0/handlers/stack"
|
||||
require "routes/v2.0/handlers/stack_template"
|
||||
require_relative "api2/routes/handlers/stack_template_preset"
|
||||
=end
|
||||
|
||||
require 'lib/stubber'
|
||||
|
||||
@ -9,7 +9,7 @@ class DevopsConfig
|
||||
class << self
|
||||
def read config_file=nil
|
||||
if config_file.nil?
|
||||
config_file = ENV['DEVOPS_CONFIG'] || ENV['CONFIG'] || File.join(File.dirname(__FILE__), 'config.rb')
|
||||
config_file = ENV['DEVOPS_CONFIG'] || ENV['CONFIG'] || File.join(File.dirname(__FILE__), '../config.rb')
|
||||
end
|
||||
config = {:url_prefix => ""}
|
||||
if File.exists? config_file
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
require "db/exceptions/invalid_record"
|
||||
require "db/mongo/models/mongo_model"
|
||||
|
||||
module Devops
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
require "db/exceptions/invalid_record"
|
||||
require "db/mongo/models/mongo_model"
|
||||
|
||||
module Devops
|
||||
|
||||
Loading…
Reference in New Issue
Block a user