From 14dc3e727ee965d58903bb2fae1165b2cf99df8e Mon Sep 17 00:00:00 2001 From: Rub21 Date: Mon, 4 May 2026 15:28:17 -0500 Subject: [PATCH] Add second GPS database support to dev recipe --- cookbooks/dev/recipes/default.rb | 21 +++++ cookbooks/web/resources/rails_port.rb | 12 ++- .../web/templates/default/database.yml.erb | 78 ++++++++++++++----- 3 files changed, 92 insertions(+), 19 deletions(-) diff --git a/cookbooks/dev/recipes/default.rb b/cookbooks/dev/recipes/default.rb index b93f91328..710aa4b67 100644 --- a/cookbooks/dev/recipes/default.rb +++ b/cookbooks/dev/recipes/default.rb @@ -360,6 +360,7 @@ if node[:postgresql][:clusters][rails_cluster.to_sym] node[:dev][:rails][:sites].each do |name, details| database_name = details[:database] || "apis_#{name}" + gps_database_name = "#{database_name}_gps" site_name = "#{name}.apis.dev.openstreetmap.org" site_directory = "/srv/#{name}.apis.dev.openstreetmap.org" log_directory = "#{site_directory}/logs" @@ -390,6 +391,18 @@ if node[:postgresql][:clusters][rails_cluster.to_sym] owner "postgres" end + postgresql_database gps_database_name do + cluster rails_cluster + owner "apis" + end + + postgresql_extension "#{gps_database_name}_postgis" do + cluster rails_cluster + database gps_database_name + extension "postgis" + owner "postgres" + end + directory site_directory do owner "apis" group "apis" @@ -435,6 +448,9 @@ if node[:postgresql][:clusters][rails_cluster.to_sym] database_port node[:postgresql][:clusters][rails_cluster.to_sym][:port] database_name database_name database_username "apis" + gps_database_port node[:postgresql][:clusters][rails_cluster.to_sym][:port] + gps_database_name gps_database_name + gps_database_username "apis" email_from "OpenStreetMap " gpx_dir gpx_directory log_path "#{log_directory}/rails.log" @@ -574,6 +590,11 @@ if node[:postgresql][:clusters][rails_cluster.to_sym] action :drop cluster rails_cluster end + + postgresql_database gps_database_name do + action :drop + cluster rails_cluster + end end end diff --git a/cookbooks/web/resources/rails_port.rb b/cookbooks/web/resources/rails_port.rb index 85c2e4281..c170d48a1 100644 --- a/cookbooks/web/resources/rails_port.rb +++ b/cookbooks/web/resources/rails_port.rb @@ -41,6 +41,11 @@ property :database_port, String property :database_name, String property :database_username, String property :database_password, String +property :gps_database_host, String +property :gps_database_port, String +property :gps_database_name, String +property :gps_database_username, String +property :gps_database_password, String property :email_from, String property :messages_domain, String property :gpx_dir, String @@ -171,7 +176,12 @@ action :create do :port => new_resource.database_port, :name => new_resource.database_name, :username => new_resource.database_username, - :password => new_resource.database_password + :password => new_resource.database_password, + :gps_host => new_resource.gps_database_host, + :gps_port => new_resource.gps_database_port, + :gps_name => new_resource.gps_database_name, + :gps_username => new_resource.gps_database_username, + :gps_password => new_resource.gps_database_password end application_yml = edit_file "#{rails_directory}/config/example.application.yml" do |line| diff --git a/cookbooks/web/templates/default/database.yml.erb b/cookbooks/web/templates/default/database.yml.erb index 9effe1bbd..82e6773ab 100644 --- a/cookbooks/web/templates/default/database.yml.erb +++ b/cookbooks/web/templates/default/database.yml.erb @@ -1,35 +1,77 @@ # DO NOT EDIT - This file is being maintained by Chef production: - adapter: postgresql + primary: + adapter: postgresql <% if @host -%> - host: <%= @host %> + host: <%= @host %> <% end -%> <% if @port -%> - port: <%= @port %> + port: <%= @port %> <% end -%> - database: <%= @name %> - username: <%= @username %> + database: <%= @name %> + username: <%= @username %> <% if @password -%> - password: <%= @password %> + password: <%= @password %> +<% end -%> + encoding: utf8 + variables: + statement_timeout: 300s +<% if @gps_name -%> + gps: + adapter: postgresql +<% if @gps_host -%> + host: <%= @gps_host %> +<% end -%> +<% if @gps_port -%> + port: <%= @gps_port %> +<% end -%> + database: <%= @gps_name %> + username: <%= @gps_username %> +<% if @gps_password -%> + password: <%= @gps_password %> +<% end -%> + encoding: utf8 + connect_timeout: 3 + variables: + statement_timeout: 300s + migrations_paths: db/gps_migrate <% end -%> - encoding: utf8 - variables: - statement_timeout: 300s development: - adapter: postgresql + primary: + adapter: postgresql <% if @host -%> - host: <%= @host %> + host: <%= @host %> <% end -%> <% if @port -%> - port: <%= @port %> + port: <%= @port %> <% end -%> - database: <%= @name %> - username: <%= @username %> + database: <%= @name %> + username: <%= @username %> <% if @password -%> - password: <%= @password %> + password: <%= @password %> +<% end -%> + encoding: utf8 + variables: + statement_timeout: 300s +<% if @gps_name -%> + gps: + adapter: postgresql +<% if @gps_host -%> + host: <%= @gps_host %> +<% end -%> +<% if @gps_port -%> + port: <%= @gps_port %> +<% end -%> + database: <%= @gps_name %> + username: <%= @gps_username %> +<% if @gps_password -%> + password: <%= @gps_password %> +<% end -%> + encoding: utf8 + connect_timeout: 3 + variables: + statement_timeout: 300s + migrations_paths: db/gps_migrate <% end -%> - encoding: utf8 - variables: - statement_timeout: 300s -- 2.47.3