models in Devops::Model module, auth
This commit is contained in:
parent
5ee2e2f714
commit
42f936f040
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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")
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user