Class: Gitlab::QA::Runtime::OmnibusConfiguration
- Inherits:
-
Object
- Object
- Gitlab::QA::Runtime::OmnibusConfiguration
- Defined in:
- lib/gitlab/qa/runtime/omnibus_configuration.rb
Direct Known Subclasses
Instance Method Summary collapse
-
#<<(config) ⇒ Object
rubocop:enable Metrics/AbcSize.
- #configuration ⇒ Object
-
#exec_commands ⇒ Object
Commands to execute before GitLab boots.
-
#initialize(prefixed_config = nil) ⇒ OmnibusConfiguration
constructor
A new instance of OmnibusConfiguration.
-
#prepare ⇒ Object
Before hook for any additional configuration This would usually be a container that needs to be running.
-
#sanitize! ⇒ Object
Ensures no duplicate entries and sanitizes configurations rubocop:disable Metrics/AbcSize.
- #to_s ⇒ Object
Constructor Details
#initialize(prefixed_config = nil) ⇒ OmnibusConfiguration
Returns a new instance of OmnibusConfiguration.
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/gitlab/qa/runtime/omnibus_configuration.rb', line 10 def initialize(prefixed_config = nil) @config = ["# Generated by GitLab QA Omnibus Configurator at #{Time.now.strftime('%Y-%m-%d %H:%M:%S')}"] return unless prefixed_config # remove generation statement if it exists within the prefixed configuration that was passed # and insert the rest AFTER the very first generation statement config_to_insert = prefixed_config.to_s generation_regexp = /# Generated by GitLab QA Omnibus Configurator.*\n/ config_to_insert = config_to_insert.gsub(generation_regexp, '') if config_to_insert.match?(generation_regexp) @config.insert(1, config_to_insert) end |
Instance Method Details
#<<(config) ⇒ Object
rubocop:enable Metrics/AbcSize
74 75 76 |
# File 'lib/gitlab/qa/runtime/omnibus_configuration.rb', line 74 def <<(config) @config << config.strip unless config.strip.empty? end |
#configuration ⇒ Object
27 28 29 |
# File 'lib/gitlab/qa/runtime/omnibus_configuration.rb', line 27 def configuration raise NotImplementedError end |
#exec_commands ⇒ Object
Commands to execute before GitLab boots
37 38 39 |
# File 'lib/gitlab/qa/runtime/omnibus_configuration.rb', line 37 def exec_commands [] end |
#prepare ⇒ Object
Before hook for any additional configuration This would usually be a container that needs to be running
34 |
# File 'lib/gitlab/qa/runtime/omnibus_configuration.rb', line 34 def prepare; end |
#sanitize! ⇒ Object
Ensures no duplicate entries and sanitizes configurations rubocop:disable Metrics/AbcSize
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/gitlab/qa/runtime/omnibus_configuration.rb', line 44 def sanitize! sanitized = @config.map do |config| next config if config.start_with?('#') || config.match(/\w+\(/) # allow for comments and method invocations # sometimes "=" is part of a Hash. Only split based on the first "=" k, v = config.split("=", 2) # make sure each config is well-formed # e.g., gitlab_rails['packages_enabled'] = true # NOT gitlab_rails['packages_enabled']=true v.nil? ? k.strip : "#{k.strip} = #{v.strip.tr('"', "'")}".strip end.uniq errors = [] # check for duplicates duplicate_keys = [] duplicates = sanitized.reject do |n| key = n.split('=').first duplicate_keys << key unless duplicate_keys.include?(key) end duplicates.each { |duplicate| errors << "Duplicate entry found: `#{duplicate}`" } raise "Errors exist within the Omnibus Configuration!\n#{errors.join(',')}" if errors.any? @config = sanitized end |
#to_s ⇒ Object
23 24 25 |
# File 'lib/gitlab/qa/runtime/omnibus_configuration.rb', line 23 def to_s sanitize!.join("\n") end |