patch method to add environment to project

This commit is contained in:
amartynov 2015-08-14 17:47:18 +03:00
parent e24aa8765b
commit 3fcc4f16d1
5 changed files with 59 additions and 3 deletions

View File

@ -30,7 +30,6 @@ module Devops
end
def project_servers id
# check if project exists
Devops::Db.connector.project(id)
Devops::Db.connector.servers(id, parser.project_servers)
end
@ -44,7 +43,6 @@ module Devops
Devops::Db.connector.stacks(options)
end
# TODO: multi project
def create_project
p = parser.create_project
raise InvalidRecord.new("Project '#{p.id}' already exist") if Devops::Db.connector.is_project_exists?(p)
@ -59,7 +57,13 @@ module Devops
end
end
# TODO: multi project
def add_deploy_env_to_project id
project = Devops::Db.connector.project(id)
env = parser.add_deploy_env_to_project
project.add_deploy_env env
"Deploy environment '#{env.identifier}' has been added to project '#{project.id}'"
end
def update_project id
project = parser.update
project.id = id

View File

@ -38,6 +38,11 @@ module Devops
Devops::Model::Project.new(body)
end
def add_deploy_env_to_project
body = create_object_from_json_body
Devops::Model::DeployEnvFactory.create(body)
end
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)

View File

@ -249,6 +249,44 @@ module Devops
end
end
# Add new deploy_env to project
#
# * *Request*
# - method : PATCH
# - 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 - Created
app.patch_with_headers "/project/:id/deploy_env", :headers => [:accept, :content_type] do |id|
check_privileges("project", "w")
begin
res = Devops::API2_0::Handler::Project.new(request).add_deploy_env_to_project(id)
create_response(res, nil, 200)
rescue InvalidRecord => e
halt_response(e.message)
end
end
users_hash = {}
# Add users to project environment
#

View File

@ -103,6 +103,11 @@ module Connectors
@collection.update({"_id" => project_id}, {"$set" => {run_list: run_list}})
end
def add_deploy_env_to_project id, env
env.validate!
@collection.update({"_id" => id}, {'$push' => {deploy_envs: env.to_hash} })
end
private
def list(query={}, query_options={})

View File

@ -62,6 +62,10 @@ module Devops
de
end
def add_deploy_env deploy_env
Devops::Db.connector.add_deploy_env_to_project self.id, deploy_env
end
def add_authorized_user user, env=nil
return if user.nil?
new_users = ( user.is_a?(Array) ? user : [ user ] )