sinatra multi routes

This commit is contained in:
Anton Martynov 2015-02-18 13:50:02 +03:00
parent ad4c823251
commit d7ac68c592
6 changed files with 50 additions and 41 deletions

View File

@ -5,15 +5,6 @@ module Devops
module DeployRoutes module DeployRoutes
def self.registered(app) 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 # Run chef-client on reserved server
# #
@ -29,7 +20,7 @@ module Devops
# } # }
# #
# * *Returns* : text stream # * *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" puts "Deploy routes initialized"
end end

View File

@ -14,15 +14,6 @@ module Devops
check_array(@images, "Request body should contains an array with strings") check_array(@images, "Request body should contains an array with strings")
end 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 # Get list of images filters for :provider
# #
# Devops can works with images from filters list only # Devops can works with images from filters list only
@ -41,7 +32,9 @@ module Devops
# [ # [
# "36dc7618-4178-4e29-be43-286fbfe90f50" # "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 # Add image ids to filter for :provider
# #
@ -56,7 +49,7 @@ module Devops
# ] -> array of image ids to add to filter # ] -> array of image ids to add to filter
# #
# * *Returns* : list of images filters for :provider # * *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 # Delete image ids from filter for :provider
# #
@ -71,7 +64,9 @@ module Devops
# ] -> array of image ids to delete from filter # ] -> array of image ids to delete from filter
# #
# * *Returns* : list of images filters for :provider # * *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" puts "Filter routes initialized"
end end

View File

@ -11,6 +11,9 @@ module Devops
def self.deploy def self.deploy
lambda { lambda {
check_privileges("server", "x")
# TODO: send message
#broadcast(:devops_deploy, "deploy")
r = create_object_from_json_body r = create_object_from_json_body
names = check_array(r["names"], "Parameter 'names' should be a not empty array of strings") 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) || [] tags = check_array(r["tags"], "Parameter 'tags' should be an array of strings", String, true) || []

View File

@ -5,6 +5,8 @@ module Devops
def self.get_filters def self.get_filters
lambda { lambda {
check_privileges("filter", "r")
check_provider(params[:provider])
json settings.mongo.available_images(params[:provider]) json settings.mongo.available_images(params[:provider])
} }
end end

View File

@ -55,23 +55,6 @@ module Devops
# ] # ]
app.get "/images/provider/:provider", :headers => [:accept], &Devops::Version2_0::Handler::Image.get_provider_images 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 # Create devops image
# #
# * *Request* # * *Request*
@ -92,6 +75,24 @@ module Devops
# 201 - Created # 201 - Created
app.post "/image", &Devops::Version2_0::Handler::Image.create_image 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 # Update devops image
# #
# * *Request* # * *Request*
@ -110,7 +111,7 @@ module Devops
# #
# * *Returns* : # * *Returns* :
# 200 - Updated # 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 # Delete devops image
# #
@ -121,7 +122,9 @@ module Devops
# #
# * *Returns* : # * *Returns* :
# 200 - Deleted # 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" puts "Image routes initialized"
end end

View File

@ -59,6 +59,21 @@ module Sinatra
statistic statistic
end end
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 end
# Check request headers # Check request headers