summaryrefslogtreecommitdiff
path: root/lib/gitlab/kubernetes/helm.rb
blob: 8765780dd5c9e0c99e0125651a54f387ab3dc152 (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
33
34
35
36
37
38
39
40
41
42
43
module Gitlab
  module Kubernetes
    class Helm
      HELM_VERSION = '2.7.0'.freeze
      NAMESPACE = 'gitlab-managed-apps'.freeze

      def initialize(kubeclient)
        @kubeclient = kubeclient
        @namespace = Gitlab::Kubernetes::Namespace.new(NAMESPACE, kubeclient)
      end

      def install(command)
        @namespace.ensure_exists!
        @kubeclient.create_pod(pod_resource(command))
      end

      ##
      # Returns Pod phase
      #
      # https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase
      #
      # values: "Pending", "Running", "Succeeded", "Failed", "Unknown"
      #
      def installation_status(pod_name)
        @kubeclient.get_pod(pod_name, @namespace.name).status.phase
      end

      def installation_log(pod_name)
        @kubeclient.get_pod_log(pod_name, @namespace.name).body
      end

      def delete_installation_pod!(pod_name)
        @kubeclient.delete_pod(pod_name, @namespace.name)
      end

      private

      def pod_resource(command)
        Pod.new(command, @namespace.name, @kubeclient).generate
      end
    end
  end
end