diff options
author | Robert Speicher <robert@gitlab.com> | 2017-04-07 21:58:19 +0000 |
---|---|---|
committer | Robert Speicher <robert@gitlab.com> | 2017-04-07 21:58:19 +0000 |
commit | 33a050d31cc657bdcc03e8cd971451b47bbadacf (patch) | |
tree | 691ab8de200d2f356dda3e10de4475c1ffa1c909 | |
parent | 60ec9c8dbbe6ac975ffbd52a1919cd82104bda00 (diff) | |
parent | 62521f20e4bfead7b224ea9067be9733fc6e2f90 (diff) | |
download | gitlab-ce-33a050d31cc657bdcc03e8cd971451b47bbadacf.tar.gz |
Merge branch 'feature/add-rake-task-prints-storage-config-in-toml' into 'master'
Add rake task that prints TOML storage configuration
Closes gitaly#173
See merge request !10448
-rw-r--r-- | Gemfile | 2 | ||||
-rw-r--r-- | Gemfile.lock | 4 | ||||
-rw-r--r-- | lib/tasks/gitlab/gitaly.rake | 14 | ||||
-rw-r--r-- | spec/tasks/gitlab/gitaly_rake_spec.rb | 32 |
4 files changed, 52 insertions, 0 deletions
@@ -356,3 +356,5 @@ gem 'sys-filesystem', '~> 1.1.6' # Gitaly GRPC client gem 'gitaly', '~> 0.5.0' + +gem 'toml-rb', '~> 0.3.15', require: false diff --git a/Gemfile.lock b/Gemfile.lock index e4603df5f7f..bdd6bd3ad83 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) @@ -1015,6 +1018,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) diff --git a/lib/tasks/gitlab/gitaly.rake b/lib/tasks/gitlab/gitaly.rake index c288e17ac8d..9f6cfe3957c 100644 --- a/lib/tasks/gitlab/gitaly.rake +++ b/lib/tasks/gitlab/gitaly.rake @@ -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 diff --git a/spec/tasks/gitlab/gitaly_rake_spec.rb b/spec/tasks/gitlab/gitaly_rake_spec.rb index d95baddf546..b369dcbb305 100644 --- a/spec/tasks/gitlab/gitaly_rake_spec.rb +++ b/spec/tasks/gitlab/gitaly_rake_spec.rb @@ -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 |