#780: add new project environment path
This commit is contained in:
parent
03e3b16aca
commit
f256b6545f
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
#
|
#
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user