2014-12-15 14:26:54 +03:00
|
|
|
module Devops
|
2015-07-27 15:40:10 +03:00
|
|
|
module API2_0
|
2014-12-22 14:22:04 +03:00
|
|
|
module Routes
|
2014-12-15 14:26:54 +03:00
|
|
|
module ProjectRoutes
|
2014-05-08 15:34:26 +04:00
|
|
|
|
2014-12-15 14:26:54 +03:00
|
|
|
def self.registered(app)
|
2014-12-22 14:22:04 +03:00
|
|
|
|
2015-07-31 15:08:40 +03:00
|
|
|
# Get project types
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : GET
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# [
|
|
|
|
|
# "type"
|
|
|
|
|
# ]
|
|
|
|
|
app.get_with_headers "/project_types", :headers => [:accept] do
|
|
|
|
|
check_privileges("project", "r")
|
|
|
|
|
json Devops::API2_0::Handler::Project.new(request).project_types
|
|
|
|
|
end
|
|
|
|
|
|
2014-12-15 14:26:54 +03:00
|
|
|
# Get projects list
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : GET
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - params :
|
|
|
|
|
# - fields - show project fields, available values: deploy_envs, type
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# [
|
|
|
|
|
# {"name" : "project_1"}
|
|
|
|
|
# ]
|
2015-07-27 15:40:10 +03:00
|
|
|
app.get_with_headers "/projects", :headers => [:accept] do
|
|
|
|
|
check_privileges("project", "r")
|
2015-10-23 21:17:04 +03:00
|
|
|
projects = Devops::API2_0::Handler::Project.new(request).projects
|
|
|
|
|
json projects.map(&:to_hash)
|
2015-07-27 15:40:10 +03:00
|
|
|
end
|
2014-05-08 15:34:26 +04:00
|
|
|
|
2014-12-15 14:26:54 +03:00
|
|
|
# Get project by id
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : GET
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# {
|
|
|
|
|
# "deploy_envs": [
|
|
|
|
|
# {
|
|
|
|
|
# "flavor": "flavor",
|
|
|
|
|
# "identifier": "prod",
|
|
|
|
|
# "image": "image id",
|
|
|
|
|
# "run_list": [
|
|
|
|
|
# "role[project_1-prod]"
|
|
|
|
|
# ],
|
|
|
|
|
# "subnets": [
|
|
|
|
|
# "private"
|
|
|
|
|
# ],
|
|
|
|
|
# "expires": null,
|
|
|
|
|
# "provider": "openstack",
|
|
|
|
|
# "groups": [
|
|
|
|
|
# "default"
|
|
|
|
|
# ],
|
|
|
|
|
# "users": [
|
|
|
|
|
# "user"
|
|
|
|
|
# ]
|
|
|
|
|
# }
|
|
|
|
|
# ],
|
|
|
|
|
# "name": "project_1"
|
|
|
|
|
# }
|
2015-02-19 11:27:56 +03:00
|
|
|
hash = {}
|
2015-07-27 15:40:10 +03:00
|
|
|
hash["GET"] = lambda {|project|
|
|
|
|
|
check_privileges("project", "r")
|
2015-07-30 15:37:43 +03:00
|
|
|
json Devops::API2_0::Handler::Project.new(request).project(project)
|
2015-07-27 15:40:10 +03:00
|
|
|
}
|
2014-05-08 15:34:26 +04:00
|
|
|
|
2015-09-15 13:06:25 +03:00
|
|
|
# Update project
|
2014-12-15 14:26:54 +03:00
|
|
|
#
|
|
|
|
|
# * *Request*
|
2015-02-19 11:27:56 +03:00
|
|
|
# - method : PUT
|
2014-12-15 14:26:54 +03:00
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - Content-Type: application/json
|
|
|
|
|
# - body :
|
|
|
|
|
# {
|
|
|
|
|
# "deploy_envs": [
|
|
|
|
|
# {
|
2015-02-19 11:27:56 +03:00
|
|
|
# "identifier": "dev",
|
2014-12-15 14:26:54 +03:00
|
|
|
# "provider": "openstack",
|
|
|
|
|
# "flavor": "m1.small",
|
|
|
|
|
# "image": "image id",
|
|
|
|
|
# "subnets": [
|
|
|
|
|
# "private"
|
|
|
|
|
# ],
|
|
|
|
|
# "groups": [
|
|
|
|
|
# "default"
|
|
|
|
|
# ],
|
|
|
|
|
# "users": [
|
|
|
|
|
# "user"
|
|
|
|
|
# ],
|
|
|
|
|
# "run_list": [
|
|
|
|
|
#
|
|
|
|
|
# ],
|
|
|
|
|
# "expires": null
|
|
|
|
|
# }
|
|
|
|
|
# ],
|
|
|
|
|
# "name": "project_1"
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
2015-02-19 11:27:56 +03:00
|
|
|
# 200 - Updated
|
2015-07-27 15:40:10 +03:00
|
|
|
hash["PUT"] = lambda { |project|
|
|
|
|
|
check_privileges("project", "w")
|
2015-07-30 15:37:43 +03:00
|
|
|
r = Devops::API2_0::Handler::Project.new(request).update_project project
|
2015-09-15 13:06:25 +03:00
|
|
|
create_response("Project '#{project}' has been updated.")
|
2015-07-27 15:40:10 +03:00
|
|
|
}
|
2014-05-08 15:34:26 +04:00
|
|
|
|
2015-02-19 11:27:56 +03:00
|
|
|
# Delete project
|
2014-12-15 14:26:54 +03:00
|
|
|
#
|
|
|
|
|
# * *Request*
|
2015-02-19 11:27:56 +03:00
|
|
|
# - method : DELETE
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - Content-Type: application/json
|
|
|
|
|
# - body :
|
|
|
|
|
# {
|
|
|
|
|
# "deploy_env": "env" -> if not null, will be deleted environment only
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# 200 - Deleted
|
2015-07-27 15:40:10 +03:00
|
|
|
hash["DELETE"] = lambda {|project|
|
|
|
|
|
check_privileges("project", "w")
|
2015-07-30 15:37:43 +03:00
|
|
|
info = Devops::API2_0::Handler::Project.new(request).delete_project(project)
|
2015-07-27 15:40:10 +03:00
|
|
|
create_response(info)
|
|
|
|
|
}
|
2015-02-19 14:16:07 +03:00
|
|
|
app.multi_routes "/project/:project", {}, hash
|
2015-02-19 11:27:56 +03:00
|
|
|
|
|
|
|
|
# Get project servers
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : GET
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - parameters :
|
|
|
|
|
# - deploy_env=:env -> show servers with environment :env
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# [
|
|
|
|
|
# {
|
|
|
|
|
# "provider": "openstack",
|
|
|
|
|
# "chef_node_name": "project_1_server",
|
|
|
|
|
# "remote_user": "root",
|
|
|
|
|
# "project": "project_1",
|
|
|
|
|
# "deploy_env": "prod",
|
|
|
|
|
# "private_ip": "10.8.8.8",
|
|
|
|
|
# "public_ip": null,
|
|
|
|
|
# "created_at": "2014-04-23 13:35:18 UTC",
|
|
|
|
|
# "created_by": "user",
|
|
|
|
|
# "static": false,
|
|
|
|
|
# "key": "ssh key",
|
|
|
|
|
# "id": "nstance id"
|
|
|
|
|
# }
|
|
|
|
|
# ]
|
2015-07-27 15:40:10 +03:00
|
|
|
app.get_with_headers "/project/:project/servers", :headers => [:accept] do |project|
|
|
|
|
|
check_privileges("project", "r")
|
2015-07-30 15:37:43 +03:00
|
|
|
json Devops::API2_0::Handler::Project.new(request).project_servers(project).map(&:to_hash)
|
2015-07-27 15:40:10 +03:00
|
|
|
end
|
2015-02-19 11:27:56 +03:00
|
|
|
|
2015-07-22 19:29:42 +03:00
|
|
|
# Get project stacks
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : GET
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - parameters :
|
|
|
|
|
# - deploy_env=:env -> show stacks with environment :env
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# [
|
|
|
|
|
# "provider": "openstack",
|
|
|
|
|
# "project": "test_openstack",
|
|
|
|
|
# "deploy_env": "test",
|
|
|
|
|
# "stack_template": "openstack_template",
|
|
|
|
|
# "cloud_stack_id": "4c712026-dcd5-4664-90b8-0915494c1332",
|
|
|
|
|
# "parameters": {
|
|
|
|
|
# "admin_pass": "Pass12",
|
|
|
|
|
# "key_name": "devops",
|
|
|
|
|
# "image": "CirrOS_0.3.1"
|
|
|
|
|
# },
|
|
|
|
|
# "details": null,
|
|
|
|
|
# "stack_status": null,
|
|
|
|
|
# "id": "openstack_stack"
|
|
|
|
|
# ]
|
2015-07-27 18:27:52 +03:00
|
|
|
app.get_with_headers "/project/:project/stacks", :headers => [:accept] do |project|
|
|
|
|
|
check_privileges("project", "r")
|
2015-07-30 15:37:43 +03:00
|
|
|
json Devops::API2_0::Handler::Project.new(request).project_stacks(project).map(&:to_hash)
|
2015-07-27 18:27:52 +03:00
|
|
|
end
|
2015-07-22 19:29:42 +03:00
|
|
|
|
2015-09-14 15:26:36 +03:00
|
|
|
# Get project deploy environments
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : GET
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
app.get_with_headers "/project/:project/deploy_envs", :headers => [:accept] do |project|
|
|
|
|
|
check_privileges("project", "r")
|
|
|
|
|
json Devops::API2_0::Handler::Project.new(request).project_deploy_envs(project)
|
|
|
|
|
end
|
|
|
|
|
|
2015-10-05 14:54:47 +03:00
|
|
|
# Add project deploy environment
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : POST
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
2015-10-06 13:50:26 +03:00
|
|
|
# - body :
|
|
|
|
|
# {
|
|
|
|
|
# "identifier": "prod",
|
|
|
|
|
# "provider": "openstack",
|
|
|
|
|
# "flavor": "m1.small",
|
|
|
|
|
# "image": "image id",
|
|
|
|
|
# "subnets": [
|
|
|
|
|
# "private"
|
|
|
|
|
# ],
|
|
|
|
|
# "groups": [
|
|
|
|
|
# "default"
|
|
|
|
|
# ],
|
|
|
|
|
# "users": [
|
|
|
|
|
# "user"
|
|
|
|
|
# ],
|
|
|
|
|
# "run_list": [ ],
|
|
|
|
|
# "expires": null
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# 200 - Added
|
2015-10-05 14:54:47 +03:00
|
|
|
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
|
|
|
|
|
|
2015-09-15 13:06:25 +03:00
|
|
|
deploy_env_hash = {}
|
2015-09-14 15:26:36 +03:00
|
|
|
# Get project deploy environment
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : GET
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
2015-09-15 13:06:25 +03:00
|
|
|
deploy_env_hash["GET"] = lambda{|project, env|
|
2015-09-14 15:26:36 +03:00
|
|
|
check_privileges("project", "r")
|
|
|
|
|
json Devops::API2_0::Handler::Project.new(request).project_deploy_env(project, env)
|
2015-09-15 13:06:25 +03:00
|
|
|
}
|
|
|
|
|
|
2015-10-06 13:50:26 +03:00
|
|
|
# Update deploy_env, you can send few fields in the body
|
2015-09-15 13:06:25 +03:00
|
|
|
#
|
|
|
|
|
# * *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
|
2015-10-06 13:50:26 +03:00
|
|
|
res = Devops::API2_0::Handler::Project.new(request).update_deploy_env(id, deploy_env)
|
2015-09-15 13:06:25 +03:00
|
|
|
create_response(res, nil, 200)
|
|
|
|
|
rescue InvalidRecord => e
|
|
|
|
|
halt_response(e.message)
|
|
|
|
|
end
|
|
|
|
|
}
|
2015-09-14 15:26:36 +03:00
|
|
|
|
2015-09-15 13:06:25 +03:00
|
|
|
# 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
|
|
|
|
|
|
2015-10-06 13:50:26 +03:00
|
|
|
app.put_with_headers "/project/:id/deploy_env/:deploy_env/:field", :headers => [:accept, :content_type] do |project_id, deploy_env, field|
|
|
|
|
|
check_privileges("project", "w")
|
|
|
|
|
res = Devops::API2_0::Handler::Project.new(request).update_deploy_env_field(project_id, deploy_env, field)
|
|
|
|
|
create_response(res, nil, 200)
|
|
|
|
|
end
|
|
|
|
|
|
2015-09-15 13:06:25 +03:00
|
|
|
# Create project
|
2015-02-19 11:27:56 +03:00
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : POST
|
2014-12-15 14:26:54 +03:00
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - Content-Type: application/json
|
|
|
|
|
# - body :
|
|
|
|
|
# {
|
|
|
|
|
# "deploy_envs": [
|
|
|
|
|
# {
|
2015-02-19 11:27:56 +03:00
|
|
|
# "identifier": "prod",
|
2014-12-15 14:26:54 +03:00
|
|
|
# "provider": "openstack",
|
|
|
|
|
# "flavor": "m1.small",
|
|
|
|
|
# "image": "image id",
|
|
|
|
|
# "subnets": [
|
|
|
|
|
# "private"
|
|
|
|
|
# ],
|
|
|
|
|
# "groups": [
|
|
|
|
|
# "default"
|
|
|
|
|
# ],
|
|
|
|
|
# "users": [
|
|
|
|
|
# "user"
|
|
|
|
|
# ],
|
|
|
|
|
# "run_list": [
|
|
|
|
|
#
|
|
|
|
|
# ],
|
|
|
|
|
# "expires": null
|
|
|
|
|
# }
|
|
|
|
|
# ],
|
|
|
|
|
# "name": "project_1"
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
2015-02-19 11:27:56 +03:00
|
|
|
# 201 - Created
|
2015-07-27 15:40:10 +03:00
|
|
|
app.post_with_headers "/project", :headers => [:accept, :content_type] do
|
|
|
|
|
check_privileges("project", "w")
|
2015-07-27 18:27:52 +03:00
|
|
|
begin
|
2015-07-30 15:37:43 +03:00
|
|
|
res = Devops::API2_0::Handler::Project.new(request).create_project
|
2015-07-27 18:27:52 +03:00
|
|
|
res = "Created. " + res
|
|
|
|
|
create_response(res, nil, 201)
|
|
|
|
|
rescue InvalidRecord => e
|
|
|
|
|
halt_response(e.message)
|
|
|
|
|
end
|
2015-07-27 15:40:10 +03:00
|
|
|
end
|
2014-05-08 15:34:26 +04:00
|
|
|
|
2015-09-15 13:06:25 +03:00
|
|
|
=begin
|
2015-09-14 17:47:11 +03:00
|
|
|
# Set components to project
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
2015-09-14 18:55:20 +03:00
|
|
|
# - method : POST
|
2015-09-14 17:47:11 +03:00
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - Content-Type: application/json
|
|
|
|
|
# - body :
|
|
|
|
|
# components: {
|
|
|
|
|
# "some_id": {
|
|
|
|
|
# "filename" : "some.war"
|
|
|
|
|
# }
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# 200 - Updated
|
2015-09-14 18:55:20 +03:00
|
|
|
app.post_with_headers "/project/:id/components", :headers => [:accept, :content_type] do |id|
|
2015-09-14 17:47:11 +03:00
|
|
|
check_privileges("project", "w")
|
|
|
|
|
res = Devops::API2_0::Handler::Project.new(request).set_project_components(id)
|
|
|
|
|
create_response(res)
|
|
|
|
|
end
|
2015-09-15 13:06:25 +03:00
|
|
|
=end
|
2015-08-14 17:47:18 +03:00
|
|
|
|
2015-02-19 11:27:56 +03:00
|
|
|
users_hash = {}
|
2014-12-15 14:26:54 +03:00
|
|
|
# Add users to project environment
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : PUT
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - Content-Type: application/json
|
|
|
|
|
# - body :
|
|
|
|
|
# {
|
|
|
|
|
# "users": [
|
|
|
|
|
# "user1"
|
|
|
|
|
# ],
|
|
|
|
|
# "deploy_env": "env" -> if null, users will be added to all environments
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# 200 - Updated
|
2015-07-27 15:40:10 +03:00
|
|
|
users_hash["PUT"] = lambda { |project|
|
|
|
|
|
check_privileges("project", "w")
|
2015-07-30 15:37:43 +03:00
|
|
|
info = Devops::API2_0::Handler::Project.new(request).update_project_users(project)
|
2015-07-27 15:40:10 +03:00
|
|
|
create_response(info)
|
|
|
|
|
}
|
2014-05-08 15:34:26 +04:00
|
|
|
|
2014-12-15 14:26:54 +03:00
|
|
|
# Delete users from project environment
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : DELETE
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - Content-Type: application/json
|
|
|
|
|
# - body :
|
|
|
|
|
# {
|
|
|
|
|
# "users": [
|
|
|
|
|
# "user1"
|
|
|
|
|
# ],
|
|
|
|
|
# "deploy_env": "env" -> if null, users will be deleted from all environments
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# 200 - Updated
|
2015-07-27 15:40:10 +03:00
|
|
|
users_hash["DELETE"] = lambda {|project|
|
|
|
|
|
check_privileges("project", "w")
|
2015-07-30 15:37:43 +03:00
|
|
|
info = Devops::API2_0::Handler::Project.new(request).delete_project_users(project)
|
2015-07-27 15:40:10 +03:00
|
|
|
create_response(info)
|
|
|
|
|
}
|
2015-02-19 11:27:56 +03:00
|
|
|
app.multi_routes "/project/:id/user", {}, users_hash
|
2014-05-08 15:34:26 +04:00
|
|
|
|
2015-08-04 12:36:10 +03:00
|
|
|
# Set run_list to project
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : PATCH
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - Content-Type: application/json
|
|
|
|
|
# - body :
|
|
|
|
|
# [
|
|
|
|
|
# "role[role_1]",
|
|
|
|
|
# "recipe[recipe_1]"
|
|
|
|
|
# ]
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# 200 - Updated
|
|
|
|
|
app.patch_with_headers "/project/:id/run_list", :headers => [:accept, :content_type] do |project|
|
|
|
|
|
check_privileges("project", "w")
|
|
|
|
|
info = Devops::API2_0::Handler::Project.new(request).set_project_run_list(project)
|
|
|
|
|
create_response(info)
|
|
|
|
|
end
|
|
|
|
|
|
2014-12-15 14:26:54 +03:00
|
|
|
# Set run_list to project environment
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
2015-08-04 12:36:10 +03:00
|
|
|
# - method : PATCH
|
2014-12-15 14:26:54 +03:00
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - Content-Type: application/json
|
|
|
|
|
# - body :
|
|
|
|
|
# [
|
|
|
|
|
# "role[role_1]",
|
|
|
|
|
# "recipe[recipe_1]"
|
|
|
|
|
# ]
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# 200 - Updated
|
2015-08-04 12:36:10 +03:00
|
|
|
app.patch_with_headers "/project/:id/:env/run_list", :headers => [:accept, :content_type] do |project, deploy_env|
|
2015-07-27 15:40:10 +03:00
|
|
|
check_privileges("project", "w")
|
2015-07-30 15:37:43 +03:00
|
|
|
info = Devops::API2_0::Handler::Project.new(request).set_project_env_run_list(project, deploy_env)
|
2015-07-27 15:40:10 +03:00
|
|
|
create_response(info)
|
|
|
|
|
end
|
2014-05-08 15:34:26 +04:00
|
|
|
|
2014-12-15 14:26:54 +03:00
|
|
|
# Run chef-client on reserved project servers
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : POST
|
|
|
|
|
# - headers :
|
2015-08-03 15:09:04 +03:00
|
|
|
# - X-Stream: true -> return output in text stream
|
2014-12-15 14:26:54 +03:00
|
|
|
# - Content-Type: application/json
|
|
|
|
|
# - body :
|
|
|
|
|
# {
|
|
|
|
|
# "servers": [
|
|
|
|
|
# "server_1"
|
|
|
|
|
# ], -> deploy servers from list, all servers if null
|
|
|
|
|
# "deploy_env": "env" -> deploy servers with environment 'env' or all project servers if null
|
|
|
|
|
# }
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* : text stream
|
2015-07-27 15:40:10 +03:00
|
|
|
app.post_with_headers "/project/:id/deploy", :headers => [:content_type] do |project|
|
|
|
|
|
check_privileges("project", "x")
|
2015-07-30 15:37:43 +03:00
|
|
|
handler = Devops::API2_0::Handler::Project.new(request)
|
2015-08-03 15:09:04 +03:00
|
|
|
if request["X-Stream"]
|
2015-07-27 15:40:10 +03:00
|
|
|
stream() do |out|
|
|
|
|
|
begin
|
2015-07-30 15:37:43 +03:00
|
|
|
status = handler.deploy_project_stream out, project
|
2015-07-27 15:40:10 +03:00
|
|
|
out << create_status(status)
|
|
|
|
|
rescue IOError => e
|
|
|
|
|
logger.error e.message
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
else
|
2015-07-30 15:37:43 +03:00
|
|
|
json handler.deploy_project project
|
2015-07-27 15:40:10 +03:00
|
|
|
end
|
|
|
|
|
end
|
2014-12-15 14:26:54 +03:00
|
|
|
|
2015-03-03 12:46:35 +03:00
|
|
|
# Set project to archivated state
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : POST
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Content-Type: application/json
|
2015-07-27 15:40:10 +03:00
|
|
|
app.post_with_headers "/project/:project/archive", :headers => [:content_type] do |project|
|
|
|
|
|
check_privileges("project", "w")
|
2015-07-30 15:37:43 +03:00
|
|
|
info = Devops::API2_0::Handler::Project.new(request).archive_project(project)
|
2015-07-27 15:40:10 +03:00
|
|
|
create_response(info)
|
|
|
|
|
end
|
2015-03-03 12:46:35 +03:00
|
|
|
|
|
|
|
|
# Set project to normal state
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
|
|
|
|
# - method : POST
|
|
|
|
|
# - headers :
|
|
|
|
|
# - Content-Type: application/json
|
2015-07-27 15:40:10 +03:00
|
|
|
app.post_with_headers "/project/:project/unarchive", :headers => [:content_type] do |project|
|
|
|
|
|
check_privileges("project", "w")
|
2015-07-30 15:37:43 +03:00
|
|
|
info = Devops::API2_0::Handler::Project.new(request).unarchive_project(project)
|
2015-07-27 15:40:10 +03:00
|
|
|
create_response(info)
|
|
|
|
|
end
|
2015-03-03 12:46:35 +03:00
|
|
|
|
2014-12-15 14:26:54 +03:00
|
|
|
# Test project environment
|
|
|
|
|
#
|
|
|
|
|
# Run tests:
|
|
|
|
|
# - run server
|
|
|
|
|
# - bootstrap server
|
|
|
|
|
# - delete server
|
|
|
|
|
#
|
|
|
|
|
# * *Request*
|
2015-09-15 13:06:25 +03:00
|
|
|
# - method : POST
|
2014-12-15 14:26:54 +03:00
|
|
|
# - headers :
|
|
|
|
|
# - Accept: application/json
|
|
|
|
|
# - Content-Type: application/json
|
|
|
|
|
#
|
|
|
|
|
# * *Returns* :
|
|
|
|
|
# 200 -
|
|
|
|
|
# {
|
|
|
|
|
# "servers": [
|
|
|
|
|
# {
|
|
|
|
|
# "id": "132958f0-61c5-4665-8cc3-66e1bacd285b",
|
|
|
|
|
# "create": {
|
|
|
|
|
# "status": true,
|
|
|
|
|
# "time": "155s"
|
|
|
|
|
# },
|
|
|
|
|
# "chef_node_name": "chef name",
|
|
|
|
|
# "bootstrap": {
|
|
|
|
|
# "status": true,
|
|
|
|
|
# "log": "\nWaiting for SSH...\n"
|
|
|
|
|
# "return_code": 0
|
|
|
|
|
# },
|
|
|
|
|
# "delete": {
|
|
|
|
|
# "status": true,
|
|
|
|
|
# "time": "2s"
|
|
|
|
|
# "log": {
|
|
|
|
|
# "chef_node": "Deleted node[chef name]",
|
|
|
|
|
# "chef_client": "Deleted client[chef name]",
|
|
|
|
|
# "server": "Server with id '132958f0-61c5-4665-8cc3-66e1bacd285b' terminated"
|
|
|
|
|
# }
|
|
|
|
|
# },
|
|
|
|
|
# }
|
|
|
|
|
# ],
|
|
|
|
|
# "project": {
|
|
|
|
|
# "deploy_envs": [
|
|
|
|
|
# {
|
|
|
|
|
# "flavor": "flavor",
|
|
|
|
|
# "identifier": "prod",
|
|
|
|
|
# "image": "image id",
|
|
|
|
|
# "run_list": [
|
|
|
|
|
# "role[prod]"
|
|
|
|
|
# ],
|
|
|
|
|
# "subnets": [
|
|
|
|
|
# "private"
|
|
|
|
|
# ],
|
|
|
|
|
# "expires": null,
|
|
|
|
|
# "provider": "openstack",
|
|
|
|
|
# "groups": [
|
|
|
|
|
# "default"
|
|
|
|
|
# ],
|
|
|
|
|
# "users": [
|
|
|
|
|
# "root"
|
|
|
|
|
# ]
|
|
|
|
|
# }
|
|
|
|
|
# ],
|
|
|
|
|
# "name": "prject_1"
|
|
|
|
|
# },
|
|
|
|
|
# "message": "Test project 'project_1' and environment 'prod'"
|
|
|
|
|
# }
|
2015-07-27 15:40:10 +03:00
|
|
|
app.post_with_headers "/project/test/:id/:env", :headers => [:accept, :content_type] do |project, deploy_env|
|
|
|
|
|
check_privileges("project", "r")
|
2015-07-30 15:37:43 +03:00
|
|
|
json Devops::API2_0::Handler::Project.new(request).test_project(project, deploy_env)
|
2015-07-27 15:40:10 +03:00
|
|
|
end
|
2014-05-08 15:34:26 +04:00
|
|
|
|
2014-12-15 14:26:54 +03:00
|
|
|
puts "Project routes initialized"
|
|
|
|
|
end
|
2014-05-08 15:34:26 +04:00
|
|
|
|
2014-11-26 15:45:33 +03:00
|
|
|
end
|
2014-05-08 15:34:26 +04:00
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|