diff --git a/devops-service/app/devops-api2.rb b/devops-service/app/devops-api2.rb index 82e9f1f..a0baa8c 100644 --- a/devops-service/app/devops-api2.rb +++ b/devops-service/app/devops-api2.rb @@ -1,3 +1,4 @@ +require "lib/expire_handler" module Devops class DevopsApi2Application < Application @@ -35,8 +36,19 @@ module Devops Devops::Api2.set :scripts_dir, (config[:scripts_dir] || File.join(config[:devops_dir], "files/scripts")) [:keys_dir, :scripts_dir].each {|key| d = Devops::Api2.settings.send(key); FileUtils.mkdir_p(d) unless File.exists?(d) } init_mongo - Devops::Api2.settings.mongo.create_root_user + mongo = Devops::Api2.settings.mongo + mongo.create_root_user ::Provider::ProviderFactory.init(config) + ::Provider::ProviderFactory.all.each do |p| + next if p.certificate_path.nil? or p.certificate_path.empty? + begin + mongo.key p.ssh_key, Devops::Model::Key::SYSTEM + rescue RecordNotFound => e + k = Devops::Model::Key.new({"id" => p.ssh_key, "path" => p.certificate_path, "scope" => Devops::Model::Key::SYSTEM}) + mongo.key_insert k + end + end + ExpireHandler.init Stubber.stub_providers!(config[:stub_providers]) end diff --git a/devops-service/commands/server.rb b/devops-service/commands/server.rb index e6950e1..d8cfeda 100644 --- a/devops-service/commands/server.rb +++ b/devops-service/commands/server.rb @@ -20,7 +20,7 @@ module ServerCommands DevopsLogger.logger.info "Server with parameters: #{s.to_hash.inspect} is running" key = mongo.key(s.key) return two_phase_bootstrap(s, out, provider, key.path) - rescue IOError => e + rescue => e DevopsLogger.logger.error e.message DevopsLogger.logger.warn roll_back(s, provider) mongo.server_delete s.id @@ -95,11 +95,11 @@ module ServerCommands def two_phase_bootstrap s, out, provider, cert_path mongo = ::Devops::Db.connector - out << "\n\nBootstrap..." + out << "\n\nBootstrap...\n" out.flush if out.respond_to?(:flush) run_list = s.options[:run_list] s.options[:run_list] = provider.run_list - out << "\nBootstrap with provider run list: #{s.options[:run_list].inspect}" + out << "Bootstrap with provider run list: #{s.options[:run_list].inspect}\n" s.chef_node_name = provider.create_default_chef_node_name(s) if s.chef_node_name.nil? status = bootstrap(s, out, cert_path) out.flush if out.respond_to?(:flush) diff --git a/devops-service/db/mongo/connectors/key.rb b/devops-service/db/mongo/connectors/key.rb index 7f28e8f..c2bfd9e 100644 --- a/devops-service/db/mongo/connectors/key.rb +++ b/devops-service/db/mongo/connectors/key.rb @@ -1,3 +1,4 @@ +require "db/mongo/models/key" module Connectors class Key < Base include Helpers::InsertCommand, diff --git a/devops-service/db/mongo/models/server.rb b/devops-service/db/mongo/models/server.rb index b7692da..8bcd484 100644 --- a/devops-service/db/mongo/models/server.rb +++ b/devops-service/db/mongo/models/server.rb @@ -60,7 +60,7 @@ module Devops self.key = s["key"] self.reserved_by = s["reserved_by"] self.stack = s["stack"] - self.run_list = p["run_list"] || [] + self.run_list = s["run_list"] || [] end def create diff --git a/devops-service/expire_handler.rb b/devops-service/lib/expire_handler.rb similarity index 100% rename from devops-service/expire_handler.rb rename to devops-service/lib/expire_handler.rb diff --git a/devops-service/providers/openstack.rb b/devops-service/providers/openstack.rb index 9a9f939..d51fffa 100644 --- a/devops-service/providers/openstack.rb +++ b/devops-service/providers/openstack.rb @@ -151,13 +151,14 @@ module Provider details = compute.get_server_details(s.id).body status = details["server"]["status"].upcase if status == "ERROR" - out << "Server returns status 'ERROR'" + out << " error\nServer returns status 'ERROR'" + out << details["server"] return false end end network = networks[0]["name"] s.private_ip = details["server"]["addresses"][network][0]["addr"] - out << "\nDone\n\n" + out << " done\n\n" out << s.info true end