diff options
author | Quang-Minh Nguyen <qmnguyen@gitlab.com> | 2022-10-31 19:53:28 +0300 |
---|---|---|
committer | Quang-Minh Nguyen <qmnguyen@gitlab.com> | 2022-10-31 19:55:58 +0300 |
commit | 63b206dd21eac0e7f573b099f6bd4154ca44ae3a (patch) | |
tree | 2cc501d32f2d8bbbc8d712864768d2b197e1783e | |
parent | 2a76a2615d8b1c6d611d0623e4d0925a4b9f914e (diff) |
ruby: Remove FeatureFlags
FeatureFlags is a wrapper for feature flags passed from Gitaly via gRPC
metadata. As there is barely anything left in ruby sidecar, it becomes
redundant.
Changelog: other
-rw-r--r-- | ruby/lib/gitaly_server.rb | 1 | ||||
-rw-r--r-- | ruby/lib/gitaly_server/feature_flags.rb | 59 | ||||
-rw-r--r-- | ruby/spec/lib/gitaly_server/feature_flags_spec.rb | 49 |
3 files changed, 0 insertions, 109 deletions
diff --git a/ruby/lib/gitaly_server.rb b/ruby/lib/gitaly_server.rb index dcd54dfd8..bb293c7bf 100644 --- a/ruby/lib/gitaly_server.rb +++ b/ruby/lib/gitaly_server.rb @@ -7,7 +7,6 @@ require_relative 'gitaly_server/client.rb' require_relative 'gitaly_server/utils.rb' require_relative 'gitaly_server/repository_service.rb' require_relative 'gitaly_server/health_service.rb' -require_relative 'gitaly_server/feature_flags.rb' module GitalyServer STORAGE_PATH_HEADER = 'gitaly-storage-path'.freeze diff --git a/ruby/lib/gitaly_server/feature_flags.rb b/ruby/lib/gitaly_server/feature_flags.rb deleted file mode 100644 index da6718a84..000000000 --- a/ruby/lib/gitaly_server/feature_flags.rb +++ /dev/null @@ -1,59 +0,0 @@ -# frozen_string_literal: true - -module GitalyServer - # Interface to Ruby-specific feature flags passed to the Gitaly Ruby server - # via headers. - class FeatureFlags - # Only headers prefixed with this String will be made available - HEADER_PREFIX = 'gitaly-feature-ruby-' - - def initialize(metadata) - @flags = metadata.select do |key, _| - key.start_with?(HEADER_PREFIX) - end - end - - # Check if a given flag is enabled - # - # The `gitaly-feature-ruby-` prefix is optional, and underscores are - # translated to hyphens automatically. - # - # Examples - # - # enabled?('gitaly-feature-ruby-my-flag') - # => true - # - # enabled?(:my_flag) - # => true - # - # enabled?('my-flag') - # => true - # - # enabled?(:unknown_flag) - # => false - def enabled?(flag, on_by_default: false) - flag = normalize_flag(flag) - - @flags.fetch(flag, on_by_default.to_s) == 'true' - end - - def disabled?(flag, on_by_default: false) - !enabled?(flag, on_by_default: on_by_default) - end - - def inspect - pairs = @flags.map { |name, value| "#{name}=#{value}" } - pairs.unshift(self.class.name) - - "#<#{pairs.join(' ')}>" - end - - private - - def normalize_flag(flag) - flag = flag.to_s.delete_prefix(HEADER_PREFIX).tr('_', '-') - - "#{HEADER_PREFIX}#{flag}" - end - end -end diff --git a/ruby/spec/lib/gitaly_server/feature_flags_spec.rb b/ruby/spec/lib/gitaly_server/feature_flags_spec.rb deleted file mode 100644 index 40e24a024..000000000 --- a/ruby/spec/lib/gitaly_server/feature_flags_spec.rb +++ /dev/null @@ -1,49 +0,0 @@ -# frozen_string_literal: true - -require 'spec_helper' - -describe GitalyServer::FeatureFlags do - describe '#enabled?' do - let(:metadata) do - { - "#{described_class::HEADER_PREFIX}some-feature" => 'true', - 'gitaly-storage-path' => 'foo', - 'gitaly-repo-path' => 'bar' - } - end - - subject { described_class.new(metadata) } - - it 'returns true for an enabled flag' do - expect(subject.enabled?(:some_feature)).to eq(true) - end - - it 'returns true for a missing flag that is on by default' do - expect(subject.enabled?(:feature_default_on, on_by_default: true)).to eq(true) - end - - it 'returns false for an unknown flag' do - expect(subject.enabled?(:missing_feature)).to eq(false) - end - - it 'removes the prefix if provided' do - expect(subject.enabled?(metadata.keys.first)).to eq(true) - end - - it 'translates underscores' do - expect(subject.enabled?('some-feature')).to eq(true) - end - end - - describe '#disabled?' do - it 'is the inverse of `enabled?`' do - instance = described_class.new({}) - - expect(instance).to receive(:enabled?) - .with(:some_feature, on_by_default: false) - .and_return(false) - - expect(instance.disabled?(:some_feature)).to eq(true) - end - end -end |