update project components

This commit is contained in:
amartynov 2015-09-14 17:47:11 +03:00
parent ed7082596b
commit feebbd19c7
6 changed files with 52 additions and 1 deletions

View File

@ -57,6 +57,15 @@ module Devops
end
end
def set_project_components id
body = parser.set_project_components
project = BaseRoutes.mongo.project(id)
project.components = body["components"]
project.validate_components
Devops::Db.connector.project_update id, "components", body["components"]
"Updated project '#{project.id}' with components '#{body["components"].inspect}'"
end
def add_or_update_deploy_env id, deploy_env
project = Devops::Db.connector.project(id)
env = parser.add_or_update_deploy_env

View File

@ -39,6 +39,12 @@ module Devops
Devops::Model::Project.new(body)
end
def set_project_components
c = create_object_from_json_body(Hash)
raise InvalidRecord.new("'components' key not found") if c["components"].nil?
c
end
def add_or_update_deploy_env
body = create_object_from_json_body
Devops::Model::DeployEnvFactory.create(body)

View File

@ -247,6 +247,28 @@ module Devops
end
end
# Set components to project
#
# * *Request*
# - method : PUT
# - headers :
# - Accept: application/json
# - Content-Type: application/json
# - body :
# components: {
# "some_id": {
# "filename" : "some.war"
# }
# }
#
# * *Returns* :
# 200 - Updated
app.patch_with_headers "/project/:id/components", :headers => [:accept, :content_type] do |id|
check_privileges("project", "w")
res = Devops::API2_0::Handler::Project.new(request).set_project_components(id)
create_response(res)
end
# Add or update deploy_env
#
# * *Request*

View File

@ -112,6 +112,12 @@ module Connectors
@collection.update({"_id" => id}, {'$pull' => {deploy_envs: {identifier: env}} })
end
def project_update id, field, value
obj = {}
obj[field] = value
@collection.update({"_id" => id}, {'$set' => obj })
end
private
def list(query={}, query_options={})

View File

@ -194,6 +194,14 @@ module Devops
Project.new p
end
#TODO: create validator
def validate_components
raise InvalidRecord.new "Components is not a hash" unless self.components.is_a?(Hash)
self.components.each do |id, c|
raise InvalidRecord.new "Component '#{id}' has no attribute 'filename'" unless c.key?("filename")
end
end
end
end
end

View File

@ -21,7 +21,7 @@ class MongoConnector
[:available_images, :add_available_images, :delete_available_images] => :filters_connector,
[:project, :projects_all, :projects, :project_names_with_envs,
:projects_by_image, :projects_by_user, :project_insert, :project_update,
:project_delete, :is_project_exists?, :check_project_auth, :set_project_run_list, :set_project_env_run_list, :add_deploy_env_to_project, :remove_deploy_env_from_project] => :projects_connector,
:project_delete, :is_project_exists?, :check_project_auth, :set_project_run_list, :set_project_env_run_list, :add_deploy_env_to_project, :remove_deploy_env_from_project, :project_update] => :projects_connector,
[:project_templates, :project_template_insert, :project_template_update,
:project_template_delete] => :projects_templates_connector,
[:servers_find, :servers, :stack_servers, :servers_by_names, :server_by_instance_id,