summaryrefslogtreecommitdiff
path: root/lib/quality
diff options
context:
space:
mode:
Diffstat (limited to 'lib/quality')
-rw-r--r--lib/quality/helm3_client.rb6
-rw-r--r--lib/quality/helm_client.rb114
-rw-r--r--lib/quality/test_level.rb1
3 files changed, 2 insertions, 119 deletions
diff --git a/lib/quality/helm3_client.rb b/lib/quality/helm3_client.rb
index f5eb0834386..afea73cbc50 100644
--- a/lib/quality/helm3_client.rb
+++ b/lib/quality/helm3_client.rb
@@ -17,10 +17,6 @@ module Quality
@revision ||= self[:revision].to_i
end
- def status
- @status ||= self[:status].downcase
- end
-
def last_update
@last_update ||= Time.parse(self[:last_update])
end
@@ -29,7 +25,7 @@ module Quality
# A single page of data and the corresponding page number.
Page = Struct.new(:releases, :number)
- def initialize(namespace:, tiller_namespace: nil)
+ def initialize(namespace:)
@namespace = namespace
end
diff --git a/lib/quality/helm_client.rb b/lib/quality/helm_client.rb
deleted file mode 100644
index fc4e1ca2d18..00000000000
--- a/lib/quality/helm_client.rb
+++ /dev/null
@@ -1,114 +0,0 @@
-# frozen_string_literal: true
-
-require 'time'
-require_relative '../gitlab/popen' unless defined?(Gitlab::Popen)
-
-module Quality
- class HelmClient
- CommandFailedError = Class.new(StandardError)
-
- attr_reader :tiller_namespace, :namespace
-
- RELEASE_JSON_ATTRIBUTES = %w[Name Revision Updated Status Chart AppVersion Namespace].freeze
-
- Release = Struct.new(:name, :revision, :last_update, :status, :chart, :app_version, :namespace) do
- def revision
- @revision ||= self[:revision].to_i
- end
-
- def last_update
- @last_update ||= Time.parse(self[:last_update])
- end
- end
-
- # A single page of data and the corresponding page number.
- Page = Struct.new(:releases, :number)
-
- def initialize(tiller_namespace:, namespace:)
- @tiller_namespace = tiller_namespace
- @namespace = namespace
- end
-
- def releases(args: [])
- each_release(args)
- end
-
- def delete(release_name:)
- run_command([
- 'delete',
- %(--tiller-namespace "#{tiller_namespace}"),
- '--purge',
- release_name
- ])
- end
-
- private
-
- def run_command(command)
- final_command = ['helm', *command].join(' ')
- puts "Running command: `#{final_command}`" # rubocop:disable Rails/Output
-
- result = Gitlab::Popen.popen_with_detail([final_command])
-
- if result.status.success?
- result.stdout.chomp.freeze
- else
- raise CommandFailedError, "The `#{final_command}` command failed (status: #{result.status}) with the following error:\n#{result.stderr}"
- end
- end
-
- def raw_releases(args = [])
- command = [
- 'list',
- %(--namespace "#{namespace}"),
- %(--tiller-namespace "#{tiller_namespace}" --output json),
- *args
- ]
- json = JSON.parse(run_command(command))
-
- releases = json['Releases'].map do |json_release|
- Release.new(*json_release.values_at(*RELEASE_JSON_ATTRIBUTES))
- end
-
- [releases, json['Next']]
- rescue JSON::ParserError => ex
- puts "Ignoring this JSON parsing error: #{ex}" # rubocop:disable Rails/Output
- [[], nil]
- end
-
- # Fetches data from Helm and yields a Page object for every page
- # of data, without loading all of them into memory.
- #
- # method - The Octokit method to use for getting the data.
- # args - Arguments to pass to the `helm list` command.
- def each_releases_page(args, &block)
- return to_enum(__method__, args) unless block_given?
-
- page = 1
- offset = ''
-
- loop do
- final_args = args.dup
- final_args << "--offset #{offset}" unless offset.to_s.empty?
- collection, offset = raw_releases(final_args)
-
- yield Page.new(collection, page += 1)
-
- break if offset.to_s.empty?
- end
- end
-
- # Iterates over all of the releases.
- #
- # args - Any arguments to pass to the `helm list` command.
- def each_release(args, &block)
- return to_enum(__method__, args) unless block_given?
-
- each_releases_page(args) do |page|
- page.releases.each do |release|
- yield release
- end
- end
- end
- end
-end
diff --git a/lib/quality/test_level.rb b/lib/quality/test_level.rb
index bbd8b4dcc3f..97b86fa8c2e 100644
--- a/lib/quality/test_level.rb
+++ b/lib/quality/test_level.rb
@@ -14,6 +14,7 @@ module Quality
],
unit: %w[
bin
+ channels
config
db
dependencies