提交 62521f20 编写于 作者: A Ahmad Sherif

Add rake task that prints TOML storage configuration

Closes gitaly#173
上级 5efd6794
......@@ -353,3 +353,5 @@ gem 'sys-filesystem', '~> 1.1.6'
# Gitaly GRPC client
gem 'gitaly', '~> 0.5.0'
gem 'toml-rb', '~> 0.3.15', require: false
......@@ -117,6 +117,7 @@ GEM
chronic_duration (0.10.6)
numerizer (~> 0.1.1)
chunky_png (1.3.5)
citrus (3.0.2)
cliver (0.3.2)
coderay (1.1.1)
coercible (1.0.0)
......@@ -784,6 +785,8 @@ GEM
tilt (2.0.6)
timecop (0.8.1)
timfel-krb5-auth (0.8.3)
toml-rb (0.3.15)
citrus (~> 3.0, > 3.0)
tool (0.2.3)
truncato (0.7.8)
htmlentities (~> 4.3.1)
......@@ -1014,6 +1017,7 @@ DEPENDENCIES
test_after_commit (~> 1.1)
thin (~> 1.7.0)
timecop (~> 0.8.0)
toml-rb (~> 0.3.15)
truncato (~> 0.7.8)
u2f (~> 0.2.1)
uglifier (~> 2.7.2)
......
......@@ -19,5 +19,19 @@ namespace :gitlab do
run_command!([command])
end
end
desc "GitLab | Print storage configuration in TOML format"
task storage_config: :environment do
require 'toml'
puts "# Gitaly storage configuration generated from #{Gitlab.config.source} on #{Time.current.to_s(:long)}"
puts "# This is in TOML format suitable for use in Gitaly's config.toml file."
config = Gitlab.config.repositories.storages.map do |key, val|
{ name: key, path: val['path'] }
end
puts TOML.dump(storage: config)
end
end
end
......@@ -75,4 +75,36 @@ describe 'gitlab:gitaly namespace rake task' do
end
end
end
describe 'storage_config' do
it 'prints storage configuration in a TOML format' do
config = {
'default' => { 'path' => '/path/to/default' },
'nfs_01' => { 'path' => '/path/to/nfs_01' },
}
allow(Gitlab.config.repositories).to receive(:storages).and_return(config)
orig_stdout = $stdout
$stdout = StringIO.new
header = ''
Timecop.freeze do
header = <<~TOML
# Gitaly storage configuration generated from #{Gitlab.config.source} on #{Time.current.to_s(:long)}
# This is in TOML format suitable for use in Gitaly's config.toml file.
TOML
run_rake_task('gitlab:gitaly:storage_config')
end
output = $stdout.string
$stdout = orig_stdout
expect(output).to include(header)
parsed_output = TOML.parse(output)
config.each do |name, params|
expect(parsed_output['storage']).to include({ 'name' => name, 'path' => params['path'] })
end
end
end
end
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册