sinatra multi routes
This commit is contained in:
parent
ad4c823251
commit
d7ac68c592
@ -5,15 +5,6 @@ module Devops
|
||||
module DeployRoutes
|
||||
|
||||
def self.registered(app)
|
||||
app.after "/deploy" do
|
||||
statistic
|
||||
end
|
||||
|
||||
app.before "/deploy" do
|
||||
check_headers :content_type
|
||||
check_privileges("server", "x")
|
||||
broadcast(:devops_deploy, "deploy")
|
||||
end
|
||||
|
||||
# Run chef-client on reserved server
|
||||
#
|
||||
@ -29,7 +20,7 @@ module Devops
|
||||
# }
|
||||
#
|
||||
# * *Returns* : text stream
|
||||
app.post "/deploy", &Devops::Version2_0::Handler::Deploy.deploy
|
||||
app.post_with_headers "/deploy", :headers => [:content_type], &Devops::Version2_0::Handler::Deploy.deploy
|
||||
|
||||
puts "Deploy routes initialized"
|
||||
end
|
||||
|
||||
@ -14,15 +14,6 @@ module Devops
|
||||
check_array(@images, "Request body should contains an array with strings")
|
||||
end
|
||||
|
||||
app.after "/filter/:provider/image" do
|
||||
statistic
|
||||
end
|
||||
|
||||
app.before "/filter/:provider/images" do
|
||||
check_headers :accept
|
||||
check_privileges("filter", "r")
|
||||
check_provider(params[:provider])
|
||||
end
|
||||
# Get list of images filters for :provider
|
||||
#
|
||||
# Devops can works with images from filters list only
|
||||
@ -41,7 +32,9 @@ module Devops
|
||||
# [
|
||||
# "36dc7618-4178-4e29-be43-286fbfe90f50"
|
||||
# ]
|
||||
app.get "/filter/:provider/images", &Devops::Version2_0::Handler::Filter.get_filters
|
||||
app.get_with_headers "/filter/:provider/images", :headers => [:accept], &Devops::Version2_0::Handler::Filter.get_filters
|
||||
|
||||
hash = {}
|
||||
|
||||
# Add image ids to filter for :provider
|
||||
#
|
||||
@ -56,7 +49,7 @@ module Devops
|
||||
# ] -> array of image ids to add to filter
|
||||
#
|
||||
# * *Returns* : list of images filters for :provider
|
||||
app.put "/filter/:provider/image", &Devops::Version2_0::Handler::Filter.add_filter
|
||||
hash["PUT"] = Devops::Version2_0::Handler::Filter.add_filter
|
||||
|
||||
# Delete image ids from filter for :provider
|
||||
#
|
||||
@ -71,7 +64,9 @@ module Devops
|
||||
# ] -> array of image ids to delete from filter
|
||||
#
|
||||
# * *Returns* : list of images filters for :provider
|
||||
app.delete "/filter/:provider/image", &Devops::Version2_0::Handler::Filter.delete_filter
|
||||
hash["DELETE"] = Devops::Version2_0::Handler::Filter.delete_filter
|
||||
|
||||
app.multi_routes "/filter/:provider/image", {:headers => [:accept, :content_type]}, hash
|
||||
|
||||
puts "Filter routes initialized"
|
||||
end
|
||||
|
||||
@ -11,6 +11,9 @@ module Devops
|
||||
|
||||
def self.deploy
|
||||
lambda {
|
||||
check_privileges("server", "x")
|
||||
# TODO: send message
|
||||
#broadcast(:devops_deploy, "deploy")
|
||||
r = create_object_from_json_body
|
||||
names = check_array(r["names"], "Parameter 'names' should be a not empty array of strings")
|
||||
tags = check_array(r["tags"], "Parameter 'tags' should be an array of strings", String, true) || []
|
||||
|
||||
@ -5,6 +5,8 @@ module Devops
|
||||
|
||||
def self.get_filters
|
||||
lambda {
|
||||
check_privileges("filter", "r")
|
||||
check_provider(params[:provider])
|
||||
json settings.mongo.available_images(params[:provider])
|
||||
}
|
||||
end
|
||||
|
||||
@ -55,23 +55,6 @@ module Devops
|
||||
# ]
|
||||
app.get "/images/provider/:provider", :headers => [:accept], &Devops::Version2_0::Handler::Image.get_provider_images
|
||||
|
||||
# Get devops image by id
|
||||
#
|
||||
# * *Request*
|
||||
# - method : GET
|
||||
# - headers :
|
||||
# - Accept: application/json
|
||||
#
|
||||
# * *Returns* :
|
||||
# {
|
||||
# "provider": "openstack",
|
||||
# "name": "centos-6.4-x86_64",
|
||||
# "remote_user": "root",
|
||||
# "bootstrap_template": null,
|
||||
# "id": "36dc7618-4178-4e29-be43-286fbfe90f50"
|
||||
# }
|
||||
app.get "/image/:image_id", :headers => [:accept], &Devops::Version2_0::Handler::Image.get_image
|
||||
|
||||
# Create devops image
|
||||
#
|
||||
# * *Request*
|
||||
@ -92,6 +75,24 @@ module Devops
|
||||
# 201 - Created
|
||||
app.post "/image", &Devops::Version2_0::Handler::Image.create_image
|
||||
|
||||
hash = {}
|
||||
# Get devops image by id
|
||||
#
|
||||
# * *Request*
|
||||
# - method : GET
|
||||
# - headers :
|
||||
# - Accept: application/json
|
||||
#
|
||||
# * *Returns* :
|
||||
# {
|
||||
# "provider": "openstack",
|
||||
# "name": "centos-6.4-x86_64",
|
||||
# "remote_user": "root",
|
||||
# "bootstrap_template": null,
|
||||
# "id": "36dc7618-4178-4e29-be43-286fbfe90f50"
|
||||
# }
|
||||
hash["GET"] = Devops::Version2_0::Handler::Image.get_image
|
||||
|
||||
# Update devops image
|
||||
#
|
||||
# * *Request*
|
||||
@ -110,7 +111,7 @@ module Devops
|
||||
#
|
||||
# * *Returns* :
|
||||
# 200 - Updated
|
||||
app.put "/image/:image_id", &Devops::Version2_0::Handler::Image.update_image
|
||||
hash["PUT"] = Devops::Version2_0::Handler::Image.update_image
|
||||
|
||||
# Delete devops image
|
||||
#
|
||||
@ -121,7 +122,9 @@ module Devops
|
||||
#
|
||||
# * *Returns* :
|
||||
# 200 - Deleted
|
||||
app.delete "/image/:image_id", &Devops::Version2_0::Handler::Image.delete_image
|
||||
hash["DELETE"] = Devops::Version2_0::Handler::Image.delete_image
|
||||
|
||||
app.multi_routes "/image/:image_id", {}, hash
|
||||
|
||||
puts "Image routes initialized"
|
||||
end
|
||||
|
||||
@ -59,6 +59,21 @@ module Sinatra
|
||||
statistic
|
||||
end
|
||||
end
|
||||
|
||||
def multi_routes path, opts={}, hash={}
|
||||
headers = opt.delete(:headers) || []
|
||||
before path do
|
||||
check_headers *headers
|
||||
end
|
||||
|
||||
hash.each do |method, block|
|
||||
route(method, path, opts, &block)
|
||||
end
|
||||
|
||||
after path do
|
||||
statistic
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
# Check request headers
|
||||
|
||||
Loading…
Reference in New Issue
Block a user