models in Devops::Model module, auth

This commit is contained in:
Anton Martynov 2015-03-06 12:20:30 +03:00
parent 5ee2e2f714
commit 42f936f040
38 changed files with 1093 additions and 1021 deletions

View File

@ -1,8 +1,9 @@
module Sinatra module Sinatra
module Devops module DevopsAuth
module Helpers module Helpers
def protect! def protect!
return if auth_with_basic? return if auth_with_basic?
headers['WWW-Authenticate'] = 'Basic realm="Restricted Area"'
halt 401, "Not authorized\n" halt 401, "Not authorized\n"
end end
@ -23,10 +24,10 @@ module Sinatra
end end
def self.registered(app) def self.registered(app)
app.helpers Devops::Helpers app.helpers Sinatra::DevopsAuth::Helpers
end end
end end
register Devops register Sinatra::DevopsAuth
end end

View File

@ -182,7 +182,7 @@ module ServerCommands
servers = [] servers = []
servers_info.each do |info| servers_info.each do |info|
image = info[:image] image = info[:image]
s = Server.new s = Devops::Model::Server.new
s.provider = provider.name s.provider = provider.name
s.project = project_name s.project = project_name
s.deploy_env = env_name s.deploy_env = env_name

View File

@ -20,7 +20,7 @@ module Connectors
private private
def model_from_bson(bson) def model_from_bson(bson)
::Image.build_from_bson(bson) Devops::Model::Image.build_from_bson(bson)
end end
end end

View File

@ -21,7 +21,7 @@ module Connectors
private private
def model_from_bson(bson) def model_from_bson(bson)
::Key.build_from_bson(bson) Devops::Model::Key.build_from_bson(bson)
end end
end end

View File

@ -96,7 +96,7 @@ module Connectors
private private
def model_from_bson(bson) def model_from_bson(bson)
::Project.build_from_bson(bson) Devops::Model::Project.build_from_bson(bson)
end end
end end

View File

@ -41,7 +41,7 @@ module Connectors
private private
def model_from_bson(bson) def model_from_bson(bson)
::Report.new(bson) Devops::Model::Report.new(bson)
end end
end end

View File

@ -66,7 +66,7 @@ module Connectors
private private
def model_from_bson(bson) def model_from_bson(bson)
::Server.build_from_bson(bson) Devops::Model::Server.build_from_bson(bson)
end end
# couldn't be replaced with ShowCommand (_id doesn't neccesary appear in params) # couldn't be replaced with ShowCommand (_id doesn't neccesary appear in params)

View File

@ -18,7 +18,7 @@ module Connectors
def model_from_bson(bson) def model_from_bson(bson)
provider = bson['provider'] provider = bson['provider']
::StackFactory.get_class(provider).build_from_bson(bson) Devops::Model::StackFactory.get_class(provider).build_from_bson(bson)
end end
end end
end end

View File

@ -18,7 +18,7 @@ module Connectors
def model_from_bson(bson) def model_from_bson(bson)
provider = bson['provider'] provider = bson['provider']
::StackTemplateFactory.get_class(provider).build_from_bson(bson) Devops::Model::StackTemplateFactory.get_class(provider).build_from_bson(bson)
end end
end end

View File

@ -29,7 +29,7 @@ module Connectors
def create_root_user def create_root_user
u = user('root') u = user('root')
rescue RecordNotFound => e rescue RecordNotFound => e
root = ::User.create_root root = Devops::Model::User.create_root
collection.insert(root.to_mongo_hash) collection.insert(root.to_mongo_hash)
end end
@ -49,7 +49,7 @@ module Connectors
private private
def model_from_bson(bson) def model_from_bson(bson)
::User.build_from_bson(bson) Devops::Model::User.build_from_bson(bson)
end end
end end

View File

@ -3,7 +3,9 @@ require "db/exceptions/invalid_record"
require "providers/provider_factory" require "providers/provider_factory"
require "commands/deploy_env" require "commands/deploy_env"
class DeployEnvBase < MongoModel module Devops
module Model
class DeployEnvBase < MongoModel
include DeployEnvCommands include DeployEnvCommands
@ -53,4 +55,6 @@ class DeployEnvBase < MongoModel
end end
end
end
end end

View File

@ -1,6 +1,8 @@
require "db/mongo/models/deploy_env/deploy_env_base" require "db/mongo/models/deploy_env/deploy_env_base"
class DeployEnvEc2 < DeployEnvBase module Devops
module Model
class DeployEnvEc2 < DeployEnvBase
attr_accessor :flavor, :image, :subnets, :groups attr_accessor :flavor, :image, :subnets, :groups
@ -60,4 +62,6 @@ class DeployEnvEc2 < DeployEnvBase
end end
end end
end
end
end end

View File

@ -2,7 +2,9 @@ require_relative "deploy_env_static"
require_relative "deploy_env_openstack" require_relative "deploy_env_openstack"
require_relative "deploy_env_ec2" require_relative "deploy_env_ec2"
class DeployEnvFactory module Devops
module Model
class DeployEnvFactory
def self.create hash def self.create hash
c = case(hash["provider"]) c = case(hash["provider"])
@ -18,4 +20,6 @@ class DeployEnvFactory
c.new(hash) c.new(hash)
end end
end
end
end end

View File

@ -2,7 +2,9 @@ require "db/mongo/models/mongo_model"
require "db/exceptions/invalid_record" require "db/exceptions/invalid_record"
require "commands/deploy_env" require "commands/deploy_env"
class DeployEnvMulti < MongoModel module Devops
module Model
class DeployEnvMulti < MongoModel
include DeployEnvCommands include DeployEnvCommands
@ -115,4 +117,6 @@ class DeployEnvMulti < MongoModel
DeployEnvMulti.new(hash) DeployEnvMulti.new(hash)
end end
end
end
end end

View File

@ -1,7 +1,9 @@
require "db/mongo/models/deploy_env/deploy_env_base" require "db/mongo/models/deploy_env/deploy_env_base"
require "providers/provider_factory" require "providers/provider_factory"
class DeployEnvOpenstack < DeployEnvBase module Devops
module Model
class DeployEnvOpenstack < DeployEnvBase
attr_accessor :flavor, :image, :subnets, :groups attr_accessor :flavor, :image, :subnets, :groups
@ -54,4 +56,6 @@ class DeployEnvOpenstack < DeployEnvBase
nil nil
end end
end
end
end end

View File

@ -1,6 +1,8 @@
require "db/mongo/models/deploy_env/deploy_env_base" require "db/mongo/models/deploy_env/deploy_env_base"
class DeployEnvStatic < DeployEnvBase module Devops
module Model
class DeployEnvStatic < DeployEnvBase
types :identifier => {:type => String, :empty => false}, types :identifier => {:type => String, :empty => false},
:provider => {:type => String, :empty => false}, :provider => {:type => String, :empty => false},
@ -14,32 +16,16 @@ class DeployEnvStatic < DeployEnvBase
def initialize d={} def initialize d={}
super(d) super(d)
=begin
self.identifier = d["identifier"]
b = d["run_list"] || []
self.run_list = (b.is_a?(Array) ? b.uniq : b)
self.expires = d["expires"]
self.provider = d["provider"]
b = d["users"] || []
self.users = (b.is_a?(Array) ? b.uniq : b)
=end
end end
def to_hash def to_hash
super super
=begin
{
"identifier" => self.identifier,
"run_list" => self.run_list,
"expires" => self.expires,
"provider" => self.provider,
"users" => self.users
}
=end
end end
def self.create hash def self.create hash
DeployEnvStatic.new(hash) DeployEnvStatic.new(hash)
end end
end
end
end end

View File

@ -1,7 +1,9 @@
require "db/exceptions/invalid_record" require "db/exceptions/invalid_record"
require "db/mongo/models/mongo_model" require "db/mongo/models/mongo_model"
class Image < MongoModel module Devops
module Model
class Image < MongoModel
attr_accessor :id, :provider, :remote_user, :name, :bootstrap_template attr_accessor :id, :provider, :remote_user, :name, :bootstrap_template
types :id => {:type => String, :empty => false}, types :id => {:type => String, :empty => false},
@ -40,4 +42,6 @@ class Image < MongoModel
Image.new( JSON.parse(json) ) Image.new( JSON.parse(json) )
end end
end
end
end end

View File

@ -2,7 +2,9 @@ require "db/exceptions/invalid_record"
require "db/mongo/models/mongo_model" require "db/mongo/models/mongo_model"
require "json" require "json"
class Key < MongoModel module Devops
module Model
class Key < MongoModel
SYSTEM = "system" SYSTEM = "system"
USER = "user" USER = "user"
@ -43,4 +45,6 @@ class Key < MongoModel
o o
end end
end
end
end end

View File

@ -2,7 +2,9 @@ require "providers/provider_factory"
require "db/exceptions/invalid_record" require "db/exceptions/invalid_record"
require "json" require "json"
class MongoModel module Devops
module Model
class MongoModel
# multi_json sends argument to 'to_json' method # multi_json sends argument to 'to_json' method
def to_json arg=nil def to_json arg=nil
@ -143,4 +145,6 @@ class MongoModel
end end
end
end
end end

View File

@ -6,7 +6,9 @@ require "db/mongo/models/deploy_env/deploy_env_multi"
require "db/mongo/models/mongo_model" require "db/mongo/models/mongo_model"
require "json" require "json"
class Project < MongoModel module Devops
module Model
class Project < MongoModel
attr_accessor :id, :deploy_envs, :type, :archived, :description attr_accessor :id, :deploy_envs, :type, :archived, :description
@ -136,4 +138,6 @@ class Project < MongoModel
Project.new p Project.new p
end end
end
end
end end

View File

@ -1,7 +1,9 @@
require "db/exceptions/invalid_record" require "db/exceptions/invalid_record"
require "db/mongo/models/mongo_model" require "db/mongo/models/mongo_model"
class Report < MongoModel module Devops
module Model
class Report < MongoModel
DEPLOY_TYPE = 1 DEPLOY_TYPE = 1
SERVER_TYPE = 2 SERVER_TYPE = 2
@ -31,4 +33,6 @@ class Report < MongoModel
} }
end end
end
end
end end

View File

@ -1,7 +1,9 @@
require "db/exceptions/invalid_record" require "db/exceptions/invalid_record"
require "db/mongo/models/mongo_model" require "db/mongo/models/mongo_model"
class Server < MongoModel module Devops
module Model
class Server < MongoModel
attr_accessor :provider, :chef_node_name, :id, :remote_user, :project, :deploy_env, :private_ip, :public_ip, :created_at, :without_bootstrap, :created_by, :reserved_by attr_accessor :provider, :chef_node_name, :id, :remote_user, :project, :deploy_env, :private_ip, :public_ip, :created_at, :without_bootstrap, :created_by, :reserved_by
attr_accessor :options, :static, :key attr_accessor :options, :static, :key
@ -86,4 +88,6 @@ class Server < MongoModel
self.static || false self.static || false
end end
end
end
end end

View File

@ -1,4 +1,6 @@
class StackBase < MongoModel module Devops
module Model
class StackBase < MongoModel
attr_accessor :id, :project, :deploy_env, :stack_template, :cloud_stack_id, :provider attr_accessor :id, :project, :deploy_env, :stack_template, :cloud_stack_id, :provider
@ -49,4 +51,6 @@ class StackBase < MongoModel
raise 'override me' raise 'override me'
end end
end
end
end end

View File

@ -1,8 +1,12 @@
class StackEc2 < StackBase module Devops
module Model
class StackEc2 < StackBase
def create_stack_in_cloud! def create_stack_in_cloud!
# create stack in AWS # create stack in AWS
self.cloud_stack_id = 'arn:aws:cloudformation:us-east-1:123456789:stack/MyStack/aaf549a0-a413-11df-adb3-5081b3858e83' self.cloud_stack_id = 'arn:aws:cloudformation:us-east-1:123456789:stack/MyStack/aaf549a0-a413-11df-adb3-5081b3858e83'
end end
end
end
end end

View File

@ -2,7 +2,9 @@ require_relative "stack_base"
require_relative "stack_openstack" require_relative "stack_openstack"
require_relative "stack_ec2" require_relative "stack_ec2"
class StackFactory module Devops
module Model
class StackFactory
def self.create(provider, attrs) def self.create(provider, attrs)
get_class(provider).create(attrs) get_class(provider).create(attrs)
@ -23,4 +25,6 @@ class StackFactory
end end
end end
end
end
end end

View File

@ -1,4 +1,6 @@
class StackOpenstack < StackBase module Devops
module Model
class StackOpenstack < StackBase
def create_stack_in_cloud! def create_stack_in_cloud!
provider = ::Provider::ProviderFactory.get('openstack') provider = ::Provider::ProviderFactory.get('openstack')
@ -7,4 +9,6 @@ class StackOpenstack < StackBase
# self.cloud_stack_id = '4c712026-dcd5-4664-90b8-0915494c1332' # self.cloud_stack_id = '4c712026-dcd5-4664-90b8-0915494c1332'
end end
end
end
end end

View File

@ -1,7 +1,9 @@
require 'tempfile' require 'tempfile'
require 'securerandom' require 'securerandom'
class StackTemplateBase < MongoModel module Devops
module Model
class StackTemplateBase < MongoModel
attr_accessor :id, :template_url, :template_json, :provider attr_accessor :id, :template_url, :template_json, :provider
@ -70,4 +72,6 @@ class StackTemplateBase < MongoModel
end end
end end
end
end
end end

View File

@ -1,4 +1,6 @@
class StackTemplateEc2 < StackTemplateBase module Devops
module Model
class StackTemplateEc2 < StackTemplateBase
def delete_template_file_from_storage def delete_template_file_from_storage
raise 'Implement me' raise 'Implement me'
@ -12,4 +14,6 @@ class StackTemplateEc2 < StackTemplateBase
end end
end end
end
end
end end

View File

@ -2,7 +2,9 @@ require_relative "stack_template_base"
require_relative "stack_template_openstack" require_relative "stack_template_openstack"
require_relative "stack_template_ec2" require_relative "stack_template_ec2"
class StackTemplateFactory module Devops
module Model
class StackTemplateFactory
def self.create(provider, attrs) def self.create(provider, attrs)
get_class(provider).create(attrs) get_class(provider).create(attrs)
@ -23,4 +25,6 @@ class StackTemplateFactory
end end
end end
end
end
end end

View File

@ -1,4 +1,6 @@
class StackTemplateOpenstack < StackTemplateBase module Devops
module Model
class StackTemplateOpenstack < StackTemplateBase
def delete_template_file_from_storage def delete_template_file_from_storage
raise 'Implement me' raise 'Implement me'
@ -12,4 +14,6 @@ class StackTemplateOpenstack < StackTemplateBase
end end
end end
end
end
end end

View File

@ -2,7 +2,9 @@ require "db/exceptions/invalid_record"
require "exceptions/invalid_command" require "exceptions/invalid_command"
require "db/mongo/models/mongo_model" require "db/mongo/models/mongo_model"
class User < MongoModel module Devops
module Model
class User < MongoModel
ROOT_USER_NAME = 'root' ROOT_USER_NAME = 'root'
ROOT_PASSWORD = '' ROOT_PASSWORD = ''
@ -109,4 +111,6 @@ class User < MongoModel
privileges.merge(options) privileges.merge(options)
end end
end
end
end end

View File

@ -37,6 +37,10 @@ class DevopsConfig
@@config @@config
end end
def [](key)
@@config[key]
end
def first_private_ipv4 def first_private_ipv4
Socket.ip_address_list.detect{|intf| intf.ipv4_private?} Socket.ip_address_list.detect{|intf| intf.ipv4_private?}
end end

View File

@ -102,6 +102,8 @@ module Devops
helpers Sinatra::Streaming helpers Sinatra::Streaming
helpers Devops::Version2_0::Helpers helpers Devops::Version2_0::Helpers
register Sinatra::DevopsAuth
=begin =begin
use Rack::Auth::Basic do |username, password| use Rack::Auth::Basic do |username, password|
begin begin

View File

@ -45,7 +45,7 @@ module Devops
lambda { lambda {
check_privileges("image", "w") check_privileges("image", "w")
settings.mongo.image params[:image_id] settings.mongo.image params[:image_id]
image = ::Image.new(create_object_from_json_body) image = Devops::Model::Image.new(create_object_from_json_body)
image.id = params[:image_id] image.id = params[:image_id]
settings.mongo.image_update image settings.mongo.image_update image
create_response("Image '#{params[:image_id]}' has been updated") create_response("Image '#{params[:image_id]}' has been updated")

View File

@ -18,7 +18,7 @@ module Devops
check_privileges("project", "r") check_privileges("project", "r")
fields = [] fields = []
if params.key?("fields") and params["fields"].is_a?(Array) if params.key?("fields") and params["fields"].is_a?(Array)
::Project.fields.each do |k| Devops::Model::Project.fields.each do |k|
fields.push k if params["fields"].include?(k) fields.push k if params["fields"].include?(k)
end end
end end
@ -49,7 +49,7 @@ module Devops
body = create_object_from_json_body body = create_object_from_json_body
check_string(body["name"], "Parameter 'name' must be a not empty string") check_string(body["name"], "Parameter 'name' must be a not empty string")
check_array(body["deploy_envs"], "Parameter 'deploy_envs' must be a not empty array of objects", Hash) check_array(body["deploy_envs"], "Parameter 'deploy_envs' must be a not empty array of objects", Hash)
p = ::Project.new(body) p = Devops::Model::Project.new(body)
halt_response("Project '#{p.id}' already exist") if settings.mongo.is_project_exists?(p) halt_response("Project '#{p.id}' already exist") if settings.mongo.is_project_exists?(p)
p.add_authorized_user [request.env['REMOTE_USER']] p.add_authorized_user [request.env['REMOTE_USER']]
settings.mongo.project_insert p settings.mongo.project_insert p
@ -70,11 +70,11 @@ module Devops
def self.update_project def self.update_project
lambda { lambda {
check_privileges("project", "w") check_privileges("project", "w")
project = ::Project.new(create_object_from_json_body) project = Devops::Model::Project.new(create_object_from_json_body)
project.id = params[:project] project.id = params[:project]
old_project = settings.mongo.project params[:project] old_project = settings.mongo.project params[:project]
settings.mongo.project_update project settings.mongo.project_update project
roles = ::Project.create_new_roles(old_project, project, logger) roles = Devops::Model::Project.create_new_roles(old_project, project, logger)
info = "Project '#{project.id}' has been updated." + Project.create_roles_response(roles) info = "Project '#{project.id}' has been updated." + Project.create_roles_response(roles)
create_response(info) create_response(info)
} }
@ -181,7 +181,7 @@ module Devops
end end
end end
else else
dir = DevopsService.config[:report_dir_v2] dir = DevopsConfig[:report_dir_v2]
files = [] files = []
uri = URI.parse(request.url) uri = URI.parse(request.url)
servers.each do |s| servers.each do |s|
@ -190,9 +190,9 @@ module Devops
rescue InvalidPrivileges, RecordNotFound => e rescue InvalidPrivileges, RecordNotFound => e
next next
end end
jid = DeployWorker.perform_async(dir, s.to_hash, [], DevopsService.config) jid = DeployWorker.perform_async(dir, s.to_hash, [], DevopsConfig.config)
logger.info "Job '#{jid}' has been started" logger.info "Job '#{jid}' has been started"
uri.path = "#{DevopsService.config[:url_prefix]}/v2.0/report/" + jid uri.path = "#{DevopsConfig[:url_prefix]}/v2.0/report/" + jid
files.push uri.to_s files.push uri.to_s
end end
json files json files
@ -234,23 +234,23 @@ module Devops
project = settings.mongo.project(params[:id]) project = settings.mongo.project(params[:id])
env = project.deploy_env params[:env] env = project.deploy_env params[:env]
logger.info "Test project '#{project.id}' and environment '#{env.identifier}'" logger.info "Test project '#{project.id}' and environment '#{env.identifier}'"
if env.provider == Provider::Static::PROVIDER if env.provider == ::Provider::Static::PROVIDER
msg = "Can not test environment with provider '#{Provider::Static::PROVIDER}'" msg = "Can not test environment with provider '#{::Provider::Static::PROVIDER}'"
Logger.warn msg Logger.warn msg
return [400, msg] return [400, msg]
end end
dir = DevopsService.config[:report_dir_v2] dir = DevopsConfig[:report_dir_v2]
uri = URI.parse(request.url) uri = URI.parse(request.url)
p = { p = {
:project => project.id, :project => project.id,
:env => env.identifier, :env => env.identifier,
:user => request.env['REMOTE_USER'] :user => request.env['REMOTE_USER']
} }
jid = ProjectTestWorker.perform_async(dir, p, DevopsService.config) jid = ProjectTestWorker.perform_async(dir, p, DevopsConfig.config)
Worker.set_status jid, Worker::STATUS::IN_QUEUE Worker.set_status jid, Worker::STATUS::IN_QUEUE
logger.info "Job '#{jid}' has been created" logger.info "Job '#{jid}' has been created"
uri.path = "#{DevopsService.config[:url_prefix]}/v2.0/report/" + jid uri.path = "#{DevopsConfig[:url_prefix]}/v2.0/report/" + jid
files = [uri.to_s] files = [uri.to_s]
sleep 1 sleep 1
json files json files
@ -283,7 +283,7 @@ module Devops
old_project.deploy_envs.each do |e| old_project.deploy_envs.each do |e|
new_project.remove_env(e.identifier) new_project.remove_env(e.identifier)
end end
::Project.create_roles new_project.id, new_project.deploy_envs, logger Devops::Model::Project.create_roles new_project.id, new_project.deploy_envs, logger
end end
def self.create_roles_response roles def self.create_roles_response roles

View File

@ -29,7 +29,7 @@ module Devops
check_privileges("server", "r") check_privileges("server", "r")
fields = [] fields = []
if params.key?("fields") and params["fields"].is_a?(Array) if params.key?("fields") and params["fields"].is_a?(Array)
Server.fields.each do |k| Devops::Model::Server.fields.each do |k|
fields.push k if params["fields"].include?(k) fields.push k if params["fields"].include?(k)
end end
end end
@ -113,16 +113,16 @@ module Devops
end end
end end
else else
dir = DevopsService.config[:report_dir_v2] dir = DevopsConfig[:report_dir_v2]
files = [] files = []
uri = URI.parse(request.url) uri = URI.parse(request.url)
servers.each do |s| servers.each do |s|
h = s.to_hash h = s.to_hash
h["options"] = s.options h["options"] = s.options
jid = CreateServerWorker.perform_async(dir, env.provider, h, request.env['REMOTE_USER'], DevopsService.config) jid = CreateServerWorker.perform_async(dir, env.provider, h, request.env['REMOTE_USER'], DevopsConfig.config)
Worker.set_status jid, Worker::STATUS::IN_QUEUE Worker.set_status jid, Worker::STATUS::IN_QUEUE
logger.info "Job '#{jid}' has been started" logger.info "Job '#{jid}' has been started"
uri.path = "#{DevopsService.config[:url_prefix]}/v2.0/report/" + jid uri.path = "#{DevopsConfig[:url_prefix]}/v2.0/report/" + jid
files.push uri.to_s files.push uri.to_s
end end
sleep 1 sleep 1
@ -254,16 +254,16 @@ module Devops
end end
end end
else else
dir = DevopsService.config[:report_dir_v2] dir = DevopsConfig[:report_dir_v2]
files = [] files = []
uri = URI.parse(request.url) uri = URI.parse(request.url)
h = s.to_hash h = s.to_hash
h["options"] = s.options h["options"] = s.options
h["_id"] = s.id h["_id"] = s.id
jid = BootstrapWorker.perform_async(dir, d.provider, h, request.env['REMOTE_USER'], DevopsService.config) jid = BootstrapWorker.perform_async(dir, d.provider, h, request.env['REMOTE_USER'], DevopsConfig.config)
Worker.set_status jid, Worker::STATUS::IN_QUEUE Worker.set_status jid, Worker::STATUS::IN_QUEUE
logger.info "Job '#{jid}' has been started" logger.info "Job '#{jid}' has been started"
uri.path = "#{DevopsService.config[:url_prefix]}/v2.0/report/" + jid uri.path = "#{DevopsConfig[:url_prefix]}/v2.0/report/" + jid
uri.query = nil uri.query = nil
uri.fragment = nil uri.fragment = nil
files.push uri.to_s files.push uri.to_s
@ -289,7 +289,7 @@ module Devops
cert = settings.mongo.key(key) cert = settings.mongo.key(key)
provider = ::Provider::ProviderFactory.get("static") provider = ::Provider::ProviderFactory.get("static")
s = Server.new s = Devops::Model::Server.new
s.provider = provider.name s.provider = provider.name
s.project = project s.project = project
s.deploy_env = deploy_env s.deploy_env = deploy_env

View File

@ -22,7 +22,7 @@ module Devops
["username", "password", "email"].each do |p| ["username", "password", "email"].each do |p|
check_string(user[p], "Parameter '#{p}' must be a not empty string") check_string(user[p], "Parameter '#{p}' must be a not empty string")
end end
Devops::Db.connector.user_insert ::User.new(user) Devops::Db.connector.user_insert Devops::Model::User.new(user)
create_response("Created", nil, 201) create_response("Created", nil, 201)
} }
end end
@ -66,7 +66,7 @@ module Devops
check_privileges("user", "w") check_privileges("user", "w")
action = File.basename(request.path) action = File.basename(request.path)
u = File.basename(File.dirname(request.path)) u = File.basename(File.dirname(request.path))
raise InvalidPrivileges.new("Access denied for '#{request.env['REMOTE_USER']}'") if u == ::User::ROOT_USER_NAME and request.env['REMOTE_USER'] != ::User::ROOT_USER_NAME raise InvalidPrivileges.new("Access denied for '#{request.env['REMOTE_USER']}'") if u == Devops::Model::User::ROOT_USER_NAME and request.env['REMOTE_USER'] != Devops::Model::User::ROOT_USER_NAME
check_privileges("user", "w") unless request.env['REMOTE_USER'] == u check_privileges("user", "w") unless request.env['REMOTE_USER'] == u

View File

@ -2,12 +2,6 @@ require "sinatra/base"
module Sinatra module Sinatra
module HeadersHelpers
end
helpers HeadersHelpers
class Base class Base
class << self class << self
@ -16,6 +10,7 @@ module Sinatra
headers = opt.delete(:headers) || [] headers = opt.delete(:headers) || []
before path do before path do
check_headers *headers check_headers *headers
protect!
end end
get path, opt, &block get path, opt, &block
@ -25,6 +20,7 @@ module Sinatra
headers = opt.delete(:headers) || [] headers = opt.delete(:headers) || []
before path do before path do
check_headers *headers check_headers *headers
protect!
end end
post_with_statistic path, opt, &block post_with_statistic path, opt, &block
end end
@ -41,6 +37,7 @@ module Sinatra
headers = opt.delete(:headers) || [] headers = opt.delete(:headers) || []
before path do before path do
check_headers *headers check_headers *headers
protect!
end end
put path, opt, &block put path, opt, &block
@ -54,6 +51,7 @@ module Sinatra
headers = opt.delete(:headers) || [] headers = opt.delete(:headers) || []
before path do before path do
check_headers *headers check_headers *headers
protect!
end end
delete path, opt, &block delete path, opt, &block
@ -71,6 +69,7 @@ module Sinatra
else else
check_headers *headers check_headers *headers
end end
protect!
end end
hash.each do |method, block| hash.each do |method, block|