diff --git a/devops-service/app/api2/handlers/stack_template.rb b/devops-service/app/api2/handlers/stack_template.rb index ff70ec3..038058f 100644 --- a/devops-service/app/api2/handlers/stack_template.rb +++ b/devops-service/app/api2/handlers/stack_template.rb @@ -19,7 +19,7 @@ module Devops def create_stack_template provider body = parser.create - template_model = Model::StackTemplateFactory.create(provider, {'template_body' => body.to_json}) + template_model = Model::StackTemplateFactory.create(provider, body) Devops::Db.connector.stack_template_insert(template_model) template_model end diff --git a/devops-service/app/api2/parsers/project.rb b/devops-service/app/api2/parsers/project.rb index 99bfa92..60782f9 100644 --- a/devops-service/app/api2/parsers/project.rb +++ b/devops-service/app/api2/parsers/project.rb @@ -34,7 +34,7 @@ module Devops body = create_object_from_json_body check_string(body["name"], "Parameter 'name' must be a not empty string") 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) + # check_array(body["run_list"], "Parameter 'run_list' must be a not empty array of string", String, false, true) Devops::Model::Project.new(body) end @@ -46,7 +46,7 @@ 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) + # check_array(body["run_list"], "Parameter 'run_list' must be a not empty array of string", String, false, true) Devops::Model::Project.new(body) end diff --git a/devops-service/db/mongo/models/stack/stack_base.rb b/devops-service/db/mongo/models/stack/stack_base.rb index 9216f6e..0d71b8b 100644 --- a/devops-service/db/mongo/models/stack/stack_base.rb +++ b/devops-service/db/mongo/models/stack/stack_base.rb @@ -1,4 +1,6 @@ require "db/mongo/models/model_with_provider" +require "providers/exceptions/name_conflict" + module Devops module Model class StackBase < MongoModel @@ -41,12 +43,17 @@ module Devops name: name, parameters: parameters, # details are required to proper status handling - details: details, + details: bson_safe_details, stack_status: stack_status, owner: owner } end + # overrided in ec2 + def bson_safe_details + details + end + def create_stack_in_cloud! out begin provider_instance.create_stack(self, out) @@ -60,7 +67,7 @@ module Devops end def sync_details! - self.details = provider_instance.stack_details(self)#.attributes + self.details = provider_instance.stack_details(self) end def resources diff --git a/devops-service/db/mongo/models/stack/stack_ec2.rb b/devops-service/db/mongo/models/stack/stack_ec2.rb index 19d7057..fcfec56 100644 --- a/devops-service/db/mongo/models/stack/stack_ec2.rb +++ b/devops-service/db/mongo/models/stack/stack_ec2.rb @@ -11,11 +11,12 @@ module Devops details['StackStatus'] if details end -=begin - def self.provider - 'ec2' + def bson_safe_details + return unless details + result = details.dup + result['CreationTime'] = result['CreationTime'].to_s + result end -=end end end diff --git a/devops-service/db/mongo/models/stack_template/stack_template_factory.rb b/devops-service/db/mongo/models/stack_template/stack_template_factory.rb index bdc579c..c085196 100644 --- a/devops-service/db/mongo/models/stack_template/stack_template_factory.rb +++ b/devops-service/db/mongo/models/stack_template/stack_template_factory.rb @@ -7,7 +7,7 @@ module Devops class StackTemplateFactory def self.create(provider, attrs) - attrs['id'] = "#{provider}_stack_template_#{Time.new.to_i}" + attrs['id'] ||= "#{provider}_stack_template_#{Time.new.to_i}" attrs['provider'] = provider st = get_class(provider).create(attrs) end diff --git a/devops-service/providers/ec2.rb b/devops-service/providers/ec2.rb index 64fbd9d..09df0b9 100644 --- a/devops-service/providers/ec2.rb +++ b/devops-service/providers/ec2.rb @@ -274,7 +274,7 @@ module Provider end def create_default_stack_name s - "stack-#{self.ssh_key}-#{s.project}-#{s.deploy_env}-#{Time.now.to_i}" + "stack-#{self.ssh_key}-#{s.project}-#{s.deploy_env}-#{Time.now.to_i}".gsub('_', '-') end private def convert_groups list