FIX perfect ci init datbase
This commit is contained in:
parent
7750ed18d7
commit
88b2dd1208
|
@ -1,14 +1,14 @@
|
||||||
class Ci::CloudAccountsController < Ci::BaseController
|
class Ci::CloudAccountsController < Ci::BaseController
|
||||||
include Ci::CloudAccountManageable
|
include Ci::CloudAccountManageable
|
||||||
|
|
||||||
|
skip_before_action :connect_to_ci_database, only: %i[create bind]
|
||||||
before_action :load_project, only: %i[create activate]
|
before_action :load_project, only: %i[create activate]
|
||||||
before_action :authorize_owner_project!, only: %i[create activate]
|
before_action :authorize_owner_project!, only: %i[create activate]
|
||||||
before_action :load_repo, only: %i[activate]
|
before_action :load_repo, only: %i[activate]
|
||||||
before_action :find_cloud_account, only: %i[show]
|
before_action :find_cloud_account, only: %i[show]
|
||||||
before_action :validate_params!, only: %i[create bind]
|
before_action :validate_params!, only: %i[create bind]
|
||||||
before_action only: %i[create bind] do
|
before_action only: %i[create bind] do
|
||||||
master_db = true
|
connect_to_ci_database(master_db: true)
|
||||||
connect_to_ci_database(master_db)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def create
|
def create
|
||||||
|
|
|
@ -24,8 +24,13 @@ module Ci::CloudAccountManageable
|
||||||
user_id: current_user.id)
|
user_id: current_user.id)
|
||||||
oauth.save!
|
oauth.save!
|
||||||
|
|
||||||
# 初始化ci端数据库
|
# 创建数据ci端数据库
|
||||||
ci_db_structure!(@connection, "#{current_user.login}_drone")
|
database_result = auto_create_database!(@connection, "#{current_user.login}_drone")
|
||||||
|
cloud_account = nil and return unless database_result.present?
|
||||||
|
|
||||||
|
# 初始化表结构
|
||||||
|
sub_connection = connect_to_ci_database
|
||||||
|
auto_create_table_structure!(sub_connection)
|
||||||
|
|
||||||
rpc_secret = SecureRandom.hex 16
|
rpc_secret = SecureRandom.hex 16
|
||||||
logger.info "######### rpc_secret: #{rpc_secret}"
|
logger.info "######### rpc_secret: #{rpc_secret}"
|
||||||
|
|
|
@ -5,7 +5,8 @@ module Ci::DbConnectable
|
||||||
end
|
end
|
||||||
|
|
||||||
# Dynamically sets the database connection.
|
# Dynamically sets the database connection.
|
||||||
def connect_to_ci_database(master_db=false)
|
def connect_to_ci_database(options={})
|
||||||
|
master_db = options[:master_db] || false
|
||||||
config = Rails.application.config_for(:configuration).symbolize_keys!
|
config = Rails.application.config_for(:configuration).symbolize_keys!
|
||||||
db_config = config[:ci_db_server].symbolize_keys!
|
db_config = config[:ci_db_server].symbolize_keys!
|
||||||
raise 'ci database config missing' if db_config.blank?
|
raise 'ci database config missing' if db_config.blank?
|
||||||
|
@ -14,22 +15,24 @@ module Ci::DbConnectable
|
||||||
host: db_config[:host],
|
host: db_config[:host],
|
||||||
username: db_config[:username],
|
username: db_config[:username],
|
||||||
password: db_config[:password],
|
password: db_config[:password],
|
||||||
port: db_config[:port],
|
port: db_config[:port]
|
||||||
database: master_db === true ? db_config[:database] : "#{current_user.login}_#{db_config[:database]}"
|
|
||||||
}
|
}
|
||||||
|
req_params = req_params.merge(database: "#{current_user.login}_#{db_config[:database]}") unless master_db === true
|
||||||
|
|
||||||
db_params = Ci::Database.get_connection_params(req_params)
|
db_params = Ci::Database.get_connection_params(req_params)
|
||||||
@connection = Ci::Database.set_connection(db_params)
|
@connection = Ci::Database.set_connection(db_params).connection
|
||||||
end
|
end
|
||||||
|
|
||||||
def ci_db_structure!(connection, database)
|
def auto_create_database!(connection, database)
|
||||||
result = connection.execute("CREATE DATABASE #{database}")
|
connection.execute("CREATE DATABASE #{database}")
|
||||||
return false unless result.present?
|
end
|
||||||
|
|
||||||
|
def auto_create_table_structure!(connection)
|
||||||
# Ci::Schema.execute(username, password, port, host, database)
|
# Ci::Schema.execute(username, password, port, host, database)
|
||||||
# con_result = @connection.execute(Ci::Schema.statement)
|
# con_result = @connection.execute(Ci::Schema.statement)
|
||||||
|
|
||||||
Ci::Schema.statement.split(';').map(&:strip).each do |sql|
|
Ci::Schema.statement.split(';').map(&:strip).each do |sql|
|
||||||
con_result = @connection.execute(sql)
|
con_result = connection.execute(sql)
|
||||||
Rails.logger.info "=============> ci create tabels result: #{con_result}"
|
Rails.logger.info "=============> ci create tabels result: #{con_result}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue