#688: done
This commit is contained in:
parent
4bf2bc0c3c
commit
8da62ce02a
@ -98,13 +98,17 @@ module Devops
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete_deploy_env id, deploy_env
|
||||||
|
project = Devops::Db.connector.project(id)
|
||||||
|
servers = Devops::Db.connector.servers_by_project_and_deploy_env(id, deploy_env)
|
||||||
|
raise InvalidRecord.new("Can not delete environment '#{deploy_env}', there are #{servers.size} servers on it") unless servers.empty?
|
||||||
|
project.delete_deploy_env(deploy_env)
|
||||||
|
end
|
||||||
|
|
||||||
def update_project id
|
def update_project id
|
||||||
project = parser.update
|
body = parser.update
|
||||||
project.id = id
|
|
||||||
old_project = Devops::Db.connector.project id
|
old_project = Devops::Db.connector.project id
|
||||||
Devops::Db.connector.project_update project
|
Devops::Db.connector.project_update id, body
|
||||||
# roles = create_new_roles(old_project, project)
|
|
||||||
# create_roles_response(roles)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# TODO: multi project
|
# TODO: multi project
|
||||||
|
|||||||
@ -52,9 +52,14 @@ module Devops
|
|||||||
|
|
||||||
def update
|
def update
|
||||||
body = create_object_from_json_body
|
body = create_object_from_json_body
|
||||||
check_array(body["deploy_envs"], "Parameter 'deploy_envs' must be a not empty array of objects", Hash)
|
check_string(body["name"], "Parameter 'name' must be a not empty string", true, false)
|
||||||
# check_array(body["run_list"], "Parameter 'run_list' must be a not empty array of string", String, false, true)
|
check_string(body["description"], "Parameter 'description' must be a string", true, true)
|
||||||
Devops::Model::Project.new(body)
|
#check_array(body["deploy_envs"], "Parameter 'deploy_envs' must be a not empty array of objects", Hash)
|
||||||
|
check_array(body["run_list"], "Parameter 'run_list' must be an array of string", String, true, true)
|
||||||
|
Validators::Helpers::RunList.new(rl).validate! unless rl.nil?
|
||||||
|
#raise InvalidRecord.new("'components' key not found") if c["components"].nil?
|
||||||
|
#Devops::Model::Project.new(body)
|
||||||
|
body
|
||||||
end
|
end
|
||||||
|
|
||||||
def delete
|
def delete
|
||||||
|
|||||||
@ -77,7 +77,7 @@ module Devops
|
|||||||
json Devops::API2_0::Handler::Project.new(request).project(project)
|
json Devops::API2_0::Handler::Project.new(request).project(project)
|
||||||
}
|
}
|
||||||
|
|
||||||
# Update project and create chef roles
|
# Update project
|
||||||
#
|
#
|
||||||
# * *Request*
|
# * *Request*
|
||||||
# - method : PUT
|
# - method : PUT
|
||||||
@ -115,8 +115,7 @@ module Devops
|
|||||||
hash["PUT"] = lambda { |project|
|
hash["PUT"] = lambda { |project|
|
||||||
check_privileges("project", "w")
|
check_privileges("project", "w")
|
||||||
r = Devops::API2_0::Handler::Project.new(request).update_project project
|
r = Devops::API2_0::Handler::Project.new(request).update_project project
|
||||||
info = "Project '#{project}' has been updated."
|
create_response("Project '#{project}' has been updated.")
|
||||||
create_response(info)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Delete project
|
# Delete project
|
||||||
@ -212,18 +211,77 @@ 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
|
||||||
|
|
||||||
|
deploy_env_hash = {}
|
||||||
# Get project deploy environment
|
# Get project deploy environment
|
||||||
#
|
#
|
||||||
# * *Request*
|
# * *Request*
|
||||||
# - method : GET
|
# - method : GET
|
||||||
# - headers :
|
# - headers :
|
||||||
# - Accept: application/json
|
# - Accept: application/json
|
||||||
app.get_with_headers "/project/:project/deploy_envs/:env", :headers => [:accept] do |project, env|
|
deploy_env_hash["GET"] = lambda{|project, env|
|
||||||
check_privileges("project", "r")
|
check_privileges("project", "r")
|
||||||
json Devops::API2_0::Handler::Project.new(request).project_deploy_env(project, env)
|
json Devops::API2_0::Handler::Project.new(request).project_deploy_env(project, env)
|
||||||
end
|
}
|
||||||
|
|
||||||
# Create project and chef roles
|
# Add or update deploy_env
|
||||||
|
#
|
||||||
|
# * *Request*
|
||||||
|
# - method : PUT
|
||||||
|
# - headers :
|
||||||
|
# - Accept: application/json
|
||||||
|
# - Content-Type: application/json
|
||||||
|
# - body :
|
||||||
|
# {
|
||||||
|
# "identifier": "prod",
|
||||||
|
# "provider": "openstack",
|
||||||
|
# "flavor": "m1.small",
|
||||||
|
# "image": "image id",
|
||||||
|
# "subnets": [
|
||||||
|
# "private"
|
||||||
|
# ],
|
||||||
|
# "groups": [
|
||||||
|
# "default"
|
||||||
|
# ],
|
||||||
|
# "users": [
|
||||||
|
# "user"
|
||||||
|
# ],
|
||||||
|
# "run_list": [ ],
|
||||||
|
# "expires": null
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# * *Returns* :
|
||||||
|
# 200 - Updated
|
||||||
|
deploy_env_hash["PUT"] = lambda{|id, deploy_env|
|
||||||
|
check_privileges("project", "w")
|
||||||
|
begin
|
||||||
|
res = Devops::API2_0::Handler::Project.new(request).add_or_update_deploy_env(id, deploy_env)
|
||||||
|
create_response(res, nil, 200)
|
||||||
|
rescue InvalidRecord => e
|
||||||
|
halt_response(e.message)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
# Delete deploy_env
|
||||||
|
#
|
||||||
|
# * *Request*
|
||||||
|
# - method : DELETE
|
||||||
|
# - headers :
|
||||||
|
# - Accept: application/json
|
||||||
|
#
|
||||||
|
# * *Returns* :
|
||||||
|
# 200 - Deleted
|
||||||
|
deploy_env_hash["DELETE"] = lambda{|id, deploy_env|
|
||||||
|
check_privileges("project", "w")
|
||||||
|
begin
|
||||||
|
res = Devops::API2_0::Handler::Project.new(request).delete_deploy_env(id, deploy_env)
|
||||||
|
create_response(res, nil, 200)
|
||||||
|
rescue InvalidRecord => e
|
||||||
|
halt_response(e.message)
|
||||||
|
end
|
||||||
|
}
|
||||||
|
app.multi_routes "/project/:id/deploy_envs/:deploy_env", {}, deploy_env_hash
|
||||||
|
|
||||||
|
# Create project
|
||||||
#
|
#
|
||||||
# * *Request*
|
# * *Request*
|
||||||
# - method : POST
|
# - method : POST
|
||||||
@ -269,6 +327,7 @@ module Devops
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
=begin
|
||||||
# Set components to project
|
# Set components to project
|
||||||
#
|
#
|
||||||
# * *Request*
|
# * *Request*
|
||||||
@ -290,44 +349,7 @@ module Devops
|
|||||||
res = Devops::API2_0::Handler::Project.new(request).set_project_components(id)
|
res = Devops::API2_0::Handler::Project.new(request).set_project_components(id)
|
||||||
create_response(res)
|
create_response(res)
|
||||||
end
|
end
|
||||||
|
=end
|
||||||
# Add or update deploy_env
|
|
||||||
#
|
|
||||||
# * *Request*
|
|
||||||
# - method : PUT
|
|
||||||
# - headers :
|
|
||||||
# - Accept: application/json
|
|
||||||
# - Content-Type: application/json
|
|
||||||
# - body :
|
|
||||||
# {
|
|
||||||
# "identifier": "prod",
|
|
||||||
# "provider": "openstack",
|
|
||||||
# "flavor": "m1.small",
|
|
||||||
# "image": "image id",
|
|
||||||
# "subnets": [
|
|
||||||
# "private"
|
|
||||||
# ],
|
|
||||||
# "groups": [
|
|
||||||
# "default"
|
|
||||||
# ],
|
|
||||||
# "users": [
|
|
||||||
# "user"
|
|
||||||
# ],
|
|
||||||
# "run_list": [ ],
|
|
||||||
# "expires": null
|
|
||||||
# }
|
|
||||||
#
|
|
||||||
# * *Returns* :
|
|
||||||
# 200 - Updated
|
|
||||||
app.put_with_headers "/project/:id/:deploy_env", :headers => [:accept, :content_type] do |id, deploy_env|
|
|
||||||
check_privileges("project", "w")
|
|
||||||
begin
|
|
||||||
res = Devops::API2_0::Handler::Project.new(request).add_or_update_deploy_env(id, deploy_env)
|
|
||||||
create_response(res, nil, 200)
|
|
||||||
rescue InvalidRecord => e
|
|
||||||
halt_response(e.message)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
users_hash = {}
|
users_hash = {}
|
||||||
# Add users to project environment
|
# Add users to project environment
|
||||||
@ -484,7 +506,7 @@ module Devops
|
|||||||
# - delete server
|
# - delete server
|
||||||
#
|
#
|
||||||
# * *Request*
|
# * *Request*
|
||||||
# - method : DELETE
|
# - method : POST
|
||||||
# - headers :
|
# - headers :
|
||||||
# - Accept: application/json
|
# - Accept: application/json
|
||||||
# - Content-Type: application/json
|
# - Content-Type: application/json
|
||||||
|
|||||||
@ -3,8 +3,8 @@ module Connectors
|
|||||||
include Helpers::InsertCommand,
|
include Helpers::InsertCommand,
|
||||||
Helpers::ShowCommand,
|
Helpers::ShowCommand,
|
||||||
# Helpers::ListCommand,
|
# Helpers::ListCommand,
|
||||||
Helpers::DeleteCommand,
|
Helpers::DeleteCommand
|
||||||
Helpers::UpdateCommand
|
# Helpers::UpdateCommand
|
||||||
|
|
||||||
|
|
||||||
def initialize(db)
|
def initialize(db)
|
||||||
@ -118,6 +118,13 @@ module Connectors
|
|||||||
@collection.update({"_id" => id}, {'$set' => obj })
|
@collection.update({"_id" => id}, {'$set' => obj })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def project_update id, params
|
||||||
|
raise InvalidRecord.new("You can not change project name for '#{id}'.") if params["name"]
|
||||||
|
keys = %w(run_list description)
|
||||||
|
params.delete_if{|k,v| !keys.include?(k)}
|
||||||
|
@collection.update({"_id" => id}, {'$set' => params })
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def list(query={}, query_options={})
|
def list(query={}, query_options={})
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user