This commit is contained in:
amartynov 2015-09-15 13:06:25 +03:00
parent 4bf2bc0c3c
commit 8da62ce02a
4 changed files with 93 additions and 55 deletions

View File

@ -98,13 +98,17 @@ module Devops
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
project = parser.update
project.id = id
body = parser.update
old_project = Devops::Db.connector.project id
Devops::Db.connector.project_update project
# roles = create_new_roles(old_project, project)
# create_roles_response(roles)
Devops::Db.connector.project_update id, body
end
# TODO: multi project

View File

@ -52,9 +52,14 @@ module Devops
def update
body = create_object_from_json_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 a not empty array of string", String, false, true)
Devops::Model::Project.new(body)
check_string(body["name"], "Parameter 'name' must be a not empty string", true, false)
check_string(body["description"], "Parameter 'description' must be a string", true, true)
#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
def delete

View File

@ -77,7 +77,7 @@ module Devops
json Devops::API2_0::Handler::Project.new(request).project(project)
}
# Update project and create chef roles
# Update project
#
# * *Request*
# - method : PUT
@ -115,8 +115,7 @@ module Devops
hash["PUT"] = lambda { |project|
check_privileges("project", "w")
r = Devops::API2_0::Handler::Project.new(request).update_project project
info = "Project '#{project}' has been updated."
create_response(info)
create_response("Project '#{project}' has been updated.")
}
# Delete project
@ -212,18 +211,77 @@ module Devops
json Devops::API2_0::Handler::Project.new(request).project_deploy_envs(project)
end
deploy_env_hash = {}
# Get project deploy environment
#
# * *Request*
# - method : GET
# - headers :
# - 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")
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*
# - method : POST
@ -269,6 +327,7 @@ module Devops
end
end
=begin
# Set components to project
#
# * *Request*
@ -290,44 +349,7 @@ module Devops
res = Devops::API2_0::Handler::Project.new(request).set_project_components(id)
create_response(res)
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
=end
users_hash = {}
# Add users to project environment
@ -484,7 +506,7 @@ module Devops
# - delete server
#
# * *Request*
# - method : DELETE
# - method : POST
# - headers :
# - Accept: application/json
# - Content-Type: application/json

View File

@ -3,8 +3,8 @@ module Connectors
include Helpers::InsertCommand,
Helpers::ShowCommand,
# Helpers::ListCommand,
Helpers::DeleteCommand,
Helpers::UpdateCommand
Helpers::DeleteCommand
# Helpers::UpdateCommand
def initialize(db)
@ -118,6 +118,13 @@ module Connectors
@collection.update({"_id" => id}, {'$set' => obj })
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
def list(query={}, query_options={})