| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  | require_relative "request_parser" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Devops | 
					
						
							|  |  |  |   module API2_0 | 
					
						
							|  |  |  |     module Parser | 
					
						
							|  |  |  |       class StackParser < RequestParser | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def create | 
					
						
							| 
									
										
										
										
											2015-08-12 13:32:26 +03:00
										 |  |  |           @body ||= create_object_from_json_body | 
					
						
							| 
									
										
										
										
											2016-04-05 20:19:43 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  |           # temp fix to work on qa: | 
					
						
							|  |  |  |           unless @body['stack_attributes'] | 
					
						
							|  |  |  |             @body = { | 
					
						
							| 
									
										
										
										
											2016-04-05 20:56:12 +03:00
										 |  |  |               'stack_attributes' => @body.dup, | 
					
						
							| 
									
										
										
										
											2016-04-14 23:00:39 +03:00
										 |  |  |               'without_bootstrap' => true, | 
					
						
							|  |  |  |               'skip_rollback' => true | 
					
						
							| 
									
										
										
										
											2016-04-05 20:19:43 +03:00
										 |  |  |             } | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-04-04 13:17:07 +03:00
										 |  |  |           stack_attributes = @body.fetch('stack_attributes') | 
					
						
							|  |  |  |           project_name = check_string(stack_attributes["project"], "Parameter 'project' must be a not empty string") | 
					
						
							|  |  |  |           env_name = check_string(stack_attributes["deploy_env"], "Parameter 'deploy_env' must be a not empty string") | 
					
						
							|  |  |  |           check_string(stack_attributes["name"], "Parameter 'name' must be a not empty string", true, false) | 
					
						
							|  |  |  |           list = check_array(stack_attributes["run_list"], "Parameter 'run_list' is invalid, it should be not empty array of strings", String, true, true) | 
					
						
							| 
									
										
										
										
											2015-08-04 12:36:10 +03:00
										 |  |  |           Validators::Helpers::RunList.new(list).validate! unless list.nil? | 
					
						
							| 
									
										
										
										
											2015-08-12 13:32:26 +03:00
										 |  |  |           @body | 
					
						
							| 
									
										
										
										
											2015-08-04 12:36:10 +03:00
										 |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         def run_list | 
					
						
							|  |  |  |           list = check_array(create_object_from_json_body(Array), "Body must contains not empty array of strings") | 
					
						
							|  |  |  |           Validators::Helpers::RunList.new(list).validate! | 
					
						
							|  |  |  |           list | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-09-15 17:14:26 +03:00
										 |  |  |         def tags | 
					
						
							|  |  |  |           @body ||= create_object_from_json_body | 
					
						
							|  |  |  |           raise InvalidRecord.new("Request body should be an object") unless @body.is_a?(Hash) | 
					
						
							|  |  |  |           @body.each do |k, v| | 
					
						
							|  |  |  |             raise InvalidRecord.new("Invalid key '#{k}', it should be a String") unless k.is_a?(String) | 
					
						
							|  |  |  |             raise InvalidRecord.new("Invalid value '#{v}' for key '#{k}', it should be a String") unless v.is_a?(String) | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |           @body | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-14 13:28:03 +03:00
										 |  |  |         def deploy | 
					
						
							|  |  |  |           @body ||= create_object_from_json_body | 
					
						
							|  |  |  |           names = check_array(@body["names"], "Parameter 'names' should be a not empty array of strings", String, true) | 
					
						
							|  |  |  |           tags = check_array(@body["tags"], "Parameter 'tags' should be an array of strings", String, true) | 
					
						
							|  |  |  |           @body | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-11-17 18:08:38 +03:00
										 |  |  |         def change_stack_template | 
					
						
							|  |  |  |           template_id = create_object_from_json_body['stack_template'] | 
					
						
							|  |  |  |           check_string(template_id, "Parameter 'stack_template' must be a not empty string") | 
					
						
							|  |  |  |           template_id | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-30 15:37:43 +03:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |