summaryrefslogtreecommitdiff
path: root/lib/quality/kubernetes_client.rb
blob: e366a688e3ea60c3d1b455c0763735262cd39a70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# frozen_string_literal: true

require_relative '../gitlab/popen' unless defined?(Gitlab::Popen)

module Quality
  class KubernetesClient
    attr_reader :namespace

    def initialize(namespace: ENV['KUBE_NAMESPACE'])
      @namespace = namespace
    end

    def cleanup(release_name:)
      command = ['kubectl']
      command << %(-n "#{namespace}" get ingress,svc,pdb,hpa,deploy,statefulset,job,pod,secret,configmap,pvc,secret,clusterrole,clusterrolebinding,role,rolebinding,sa 2>&1)
      command << '|' << %(grep "#{release_name}")
      command << '|' << "awk '{print $1}'"
      command << '|' << %(xargs kubectl -n "#{namespace}" delete)
      command << '||' << 'true'

      run_command(command)
    end

    private

    def run_command(command)
      puts "Running command: `#{command.join(' ')}`" # rubocop:disable Rails/Output

      Gitlab::Popen.popen_with_detail(command)
    end
  end
end