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}'"
|
||||
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
|
||||
project = Devops::Db.connector.project(id)
|
||||
env = parser.add_or_update_deploy_env
|
||||
|
||||
@ -15,7 +15,7 @@ module Devops
|
||||
end
|
||||
|
||||
def stacks_for_provider provider
|
||||
Devops::Db.connector.stacks(provider)
|
||||
Devops::Db.connector.stacks(provider: provider)
|
||||
end
|
||||
|
||||
def create_stack
|
||||
|
||||
@ -45,6 +45,11 @@ module Devops
|
||||
c
|
||||
end
|
||||
|
||||
def add_deploy_env
|
||||
body = create_object_from_json_body
|
||||
Devops::Model::DeployEnvFactory.create(body)
|
||||
end
|
||||
|
||||
def add_or_update_deploy_env
|
||||
body = create_object_from_json_body
|
||||
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)
|
||||
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 = {}
|
||||
# Get project deploy environment
|
||||
#
|
||||
|
||||
@ -24,6 +24,7 @@ module Devops
|
||||
register Sinatra::DevopsAuth
|
||||
|
||||
@@logger = nil
|
||||
@@access_logger = DevopsLogger.access_logger(File.join(DevopsConfig.config[:log_dir], "devops-api2.access.log"))
|
||||
|
||||
configure :production do
|
||||
config = DevopsConfig.config
|
||||
@ -57,7 +58,9 @@ module Devops
|
||||
# set current logger and call handlers
|
||||
def call env
|
||||
DevopsLogger.logger = @@logger
|
||||
super(env)
|
||||
res = super(env)
|
||||
@@access_logger.info(env["REQUEST_METHOD"] + " " + env["REQUEST_URI"] + " - from #{env["HTTP_USER_AGENT"]}")
|
||||
res
|
||||
end
|
||||
|
||||
error Devops::ValidationError do
|
||||
|
||||
@ -6,8 +6,10 @@ module SshCommands
|
||||
end
|
||||
|
||||
def ssh_execute server, cmd
|
||||
key_path = File.join(DevopsCid.config[:keys_dir], server[:private_key])
|
||||
res = `ssh -i #{key_path} #{server[:remote_user]}@#{server[:host]} '#{cmd}'`
|
||||
key_path = server[:private_key]
|
||||
ssh_cmd = "ssh -i #{key_path} #{server[:remote_user]}@#{server[:host]} '#{cmd}'"
|
||||
DevopsLogger.logger.info "Ssh command: #{ssh_cmd}"
|
||||
res = `#{ssh_cmd}`
|
||||
return res, $?
|
||||
end
|
||||
|
||||
|
||||
@ -10,6 +10,18 @@ class DevopsLogger
|
||||
logger
|
||||
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
|
||||
@_logger ||= DevopsLogger.create(File.join(DevopsConfig.config[:log_dir], "devops.errors.log"))
|
||||
end
|
||||
|
||||
@ -45,6 +45,36 @@ module Devops
|
||||
"Deploy environment '#{self.identifier}'. " + message
|
||||
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
|
||||
|
||||
@ -19,6 +19,8 @@ module Devops
|
||||
define_hook :before_delete
|
||||
define_hook :after_delete
|
||||
|
||||
#define_hook :after_add_deploy_env
|
||||
|
||||
attr_accessor :id, :deploy_envs, :type, :archived, :description, :run_list
|
||||
|
||||
types :id => {:type => String, :empty => false},
|
||||
@ -63,8 +65,9 @@ module Devops
|
||||
end
|
||||
|
||||
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
|
||||
""
|
||||
create_roles_response(res)
|
||||
end
|
||||
|
||||
def add_authorized_user user, env=nil
|
||||
@ -207,6 +210,18 @@ module Devops
|
||||
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
|
||||
|
||||
@ -453,7 +453,7 @@ module Devops
|
||||
rlist = Set.new(rlist)
|
||||
if @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
|
||||
rlist.merge(srl) if srl.is_a?(Array)
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user