Merge branch '#810' of /home/git/repositories/cloudtechlab/devops-service into qa
This commit is contained in:
commit
71d5d02550
@ -80,6 +80,20 @@ module Devops
|
|||||||
"Updated project '#{project.id}' with components '#{body["components"].inspect}'"
|
"Updated project '#{project.id}' with components '#{body["components"].inspect}'"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def add_deploy_env id
|
||||||
|
project = Devops::Db.connector.project(id)
|
||||||
|
env = parser.add_deploy_env
|
||||||
|
env.add_users [parser.current_user]
|
||||||
|
env.validate!
|
||||||
|
begin
|
||||||
|
db_env = project.deploy_env(env.identifier)
|
||||||
|
raise InvalidRecord.new("Can not add new environment for project '#{id}'. Environment '#{env.identifier}' already exist")
|
||||||
|
rescue RecordNotFound => e
|
||||||
|
res = project.add_deploy_env env
|
||||||
|
return "Deploy environment '#{env.identifier}' has been added to project '#{project.id}'." + res, env
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def add_or_update_deploy_env id, deploy_env
|
def add_or_update_deploy_env id, deploy_env
|
||||||
project = Devops::Db.connector.project(id)
|
project = Devops::Db.connector.project(id)
|
||||||
env = parser.add_or_update_deploy_env
|
env = parser.add_or_update_deploy_env
|
||||||
|
|||||||
@ -15,7 +15,7 @@ module Devops
|
|||||||
end
|
end
|
||||||
|
|
||||||
def stacks_for_provider provider
|
def stacks_for_provider provider
|
||||||
Devops::Db.connector.stacks(provider)
|
Devops::Db.connector.stacks(provider: provider)
|
||||||
end
|
end
|
||||||
|
|
||||||
def create_stack
|
def create_stack
|
||||||
|
|||||||
@ -45,6 +45,11 @@ module Devops
|
|||||||
c
|
c
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def add_deploy_env
|
||||||
|
body = create_object_from_json_body
|
||||||
|
Devops::Model::DeployEnvFactory.create(body)
|
||||||
|
end
|
||||||
|
|
||||||
def add_or_update_deploy_env
|
def add_or_update_deploy_env
|
||||||
body = create_object_from_json_body
|
body = create_object_from_json_body
|
||||||
rl = check_array(body["run_list"], "Parameter 'run_list' should be an array of string", String, false, true)
|
rl = check_array(body["run_list"], "Parameter 'run_list' should be an array of string", String, false, true)
|
||||||
|
|||||||
@ -211,6 +211,18 @@ module Devops
|
|||||||
json Devops::API2_0::Handler::Project.new(request).project_deploy_envs(project)
|
json Devops::API2_0::Handler::Project.new(request).project_deploy_envs(project)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Add project deploy environment
|
||||||
|
#
|
||||||
|
# * *Request*
|
||||||
|
# - method : POST
|
||||||
|
# - headers :
|
||||||
|
# - Accept: application/json
|
||||||
|
app.post_with_headers "/project/:project/deploy_env", :headers => [:accept, :content_type] do |project|
|
||||||
|
check_privileges("project", "w")
|
||||||
|
res, env = Devops::API2_0::Handler::Project.new(request).add_deploy_env(project)
|
||||||
|
create_response(res, {environment: env.to_hash}, 200)
|
||||||
|
end
|
||||||
|
|
||||||
deploy_env_hash = {}
|
deploy_env_hash = {}
|
||||||
# Get project deploy environment
|
# Get project deploy environment
|
||||||
#
|
#
|
||||||
|
|||||||
@ -24,6 +24,7 @@ module Devops
|
|||||||
register Sinatra::DevopsAuth
|
register Sinatra::DevopsAuth
|
||||||
|
|
||||||
@@logger = nil
|
@@logger = nil
|
||||||
|
@@access_logger = DevopsLogger.access_logger(File.join(DevopsConfig.config[:log_dir], "devops-api2.access.log"))
|
||||||
|
|
||||||
configure :production do
|
configure :production do
|
||||||
config = DevopsConfig.config
|
config = DevopsConfig.config
|
||||||
@ -57,7 +58,9 @@ module Devops
|
|||||||
# set current logger and call handlers
|
# set current logger and call handlers
|
||||||
def call env
|
def call env
|
||||||
DevopsLogger.logger = @@logger
|
DevopsLogger.logger = @@logger
|
||||||
super(env)
|
res = super(env)
|
||||||
|
@@access_logger.info(env["REQUEST_METHOD"] + " " + env["REQUEST_URI"] + " - from #{env["HTTP_USER_AGENT"]}")
|
||||||
|
res
|
||||||
end
|
end
|
||||||
|
|
||||||
error Devops::ValidationError do
|
error Devops::ValidationError do
|
||||||
|
|||||||
@ -6,8 +6,10 @@ module SshCommands
|
|||||||
end
|
end
|
||||||
|
|
||||||
def ssh_execute server, cmd
|
def ssh_execute server, cmd
|
||||||
key_path = File.join(DevopsCid.config[:keys_dir], server[:private_key])
|
key_path = server[:private_key]
|
||||||
res = `ssh -i #{key_path} #{server[:remote_user]}@#{server[:host]} '#{cmd}'`
|
ssh_cmd = "ssh -i #{key_path} #{server[:remote_user]}@#{server[:host]} '#{cmd}'"
|
||||||
|
DevopsLogger.logger.info "Ssh command: #{ssh_cmd}"
|
||||||
|
res = `#{ssh_cmd}`
|
||||||
return res, $?
|
return res, $?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -10,6 +10,18 @@ class DevopsLogger
|
|||||||
logger
|
logger
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def self.access_logger out, level=Logger::INFO, format='%d-%m-%Y %H:%M:%S'
|
||||||
|
logger = Logger.new out
|
||||||
|
logger.level = level
|
||||||
|
logger.datetime_format = format
|
||||||
|
logger.formatter = proc do |severity, datetime, progname, msg|
|
||||||
|
date_format = datetime.strftime(format)
|
||||||
|
"[#{date_format}] #{msg}\n"
|
||||||
|
end
|
||||||
|
logger.debug("Logger has been created")
|
||||||
|
logger
|
||||||
|
end
|
||||||
|
|
||||||
def self.logger
|
def self.logger
|
||||||
@_logger ||= DevopsLogger.create(File.join(DevopsConfig.config[:log_dir], "devops.errors.log"))
|
@_logger ||= DevopsLogger.create(File.join(DevopsConfig.config[:log_dir], "devops.errors.log"))
|
||||||
end
|
end
|
||||||
|
|||||||
@ -45,6 +45,36 @@ module Devops
|
|||||||
"Deploy environment '#{self.identifier}'. " + message
|
"Deploy environment '#{self.identifier}'. " + message
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create_role project_id
|
||||||
|
knife = KnifeFactory.instance
|
||||||
|
if knife.nil?
|
||||||
|
DevopsLogger.logger.error "Can not get knife instance"
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
all_roles = knife.roles
|
||||||
|
info = {}
|
||||||
|
if all_roles.nil?
|
||||||
|
msg = "Can't get roles list from chef"
|
||||||
|
DevopsLogger.logger.error msg
|
||||||
|
return {error: msg}
|
||||||
|
end
|
||||||
|
role_name = knife.role_name(project_id, self.identifier)
|
||||||
|
begin
|
||||||
|
if all_roles.include? role_name
|
||||||
|
info[:exist] = role_name
|
||||||
|
else
|
||||||
|
knife.create_role role_name, project_id, self.identifier
|
||||||
|
info[:new] = role_name
|
||||||
|
DevopsLogger.logger.info "Role '#{role_name}' created"
|
||||||
|
end
|
||||||
|
self.run_list << "role[#{role_name}]"
|
||||||
|
rescue => er
|
||||||
|
info[:error] = role_name
|
||||||
|
DevopsLogger.logger.error "Role '#{role_name}' can not be created: #{er.message}"
|
||||||
|
end
|
||||||
|
info
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -19,6 +19,8 @@ module Devops
|
|||||||
define_hook :before_delete
|
define_hook :before_delete
|
||||||
define_hook :after_delete
|
define_hook :after_delete
|
||||||
|
|
||||||
|
#define_hook :after_add_deploy_env
|
||||||
|
|
||||||
attr_accessor :id, :deploy_envs, :type, :archived, :description, :run_list
|
attr_accessor :id, :deploy_envs, :type, :archived, :description, :run_list
|
||||||
|
|
||||||
types :id => {:type => String, :empty => false},
|
types :id => {:type => String, :empty => false},
|
||||||
@ -63,8 +65,9 @@ module Devops
|
|||||||
end
|
end
|
||||||
|
|
||||||
def add_deploy_env deploy_env
|
def add_deploy_env deploy_env
|
||||||
|
res = deploy_env.create_role(self.id)
|
||||||
Devops::Db.connector.add_deploy_env_to_project self.id, deploy_env
|
Devops::Db.connector.add_deploy_env_to_project self.id, deploy_env
|
||||||
""
|
create_roles_response(res)
|
||||||
end
|
end
|
||||||
|
|
||||||
def add_authorized_user user, env=nil
|
def add_authorized_user user, env=nil
|
||||||
@ -207,6 +210,18 @@ module Devops
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def create_roles_response roles
|
||||||
|
if roles.is_a?(String)
|
||||||
|
roles
|
||||||
|
else
|
||||||
|
info = ""
|
||||||
|
info += " Project roles '#{roles[:new].join("', '")}' have been automaticaly created" unless roles[:new].empty?
|
||||||
|
info += " Project roles '#{roles[:exist].join("', '")}' weren't created because they exist" unless roles[:exist].empty?
|
||||||
|
info += " Project roles '#{roles[:error].join("', '")}' weren't created because of internal error" unless roles[:error].empty?
|
||||||
|
info
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -453,7 +453,7 @@ module Devops
|
|||||||
rlist = Set.new(rlist)
|
rlist = Set.new(rlist)
|
||||||
if @server.stack
|
if @server.stack
|
||||||
stack = Devops::Db.connector.stack(@server.stack)
|
stack = Devops::Db.connector.stack(@server.stack)
|
||||||
out << "Stack run list: #{stack.run_list.join(", ")}\n"
|
# out << "Stack run list: #{stack.run_list.join(", ")}\n"
|
||||||
srl = stack.run_list
|
srl = stack.run_list
|
||||||
rlist.merge(srl) if srl.is_a?(Array)
|
rlist.merge(srl) if srl.is_a?(Array)
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user