gitlab-org--gitlab-foss/app/models/clusters/applications/helm.rb

62 lines
1.5 KiB
Ruby
Raw Normal View History

require 'openssl'
module Clusters
2017-11-02 10:10:46 -04:00
module Applications
class Helm < ActiveRecord::Base
self.table_name = 'clusters_applications_helm'
attr_encrypted :ca_key,
mode: :per_attribute_iv,
key: Settings.attr_encrypted_db_key_base_truncated,
algorithm: 'aes-256-cbc'
include ::Clusters::Concerns::ApplicationCore
2017-11-02 12:57:50 -04:00
include ::Clusters::Concerns::ApplicationStatus
2017-11-02 11:57:18 -04:00
default_value_for :version, Gitlab::Kubernetes::Helm::HELM_VERSION
before_create :create_keys_and_certs
def create_keys_and_certs
ca_cert = Gitlab::Kubernetes::Helm::Certificate.generate_root
self.ca_key = ca_cert.key_string
self.ca_cert = ca_cert.cert_string
end
def ca_cert_obj
return unless has_ssl?
Gitlab::Kubernetes::Helm::Certificate
.from_strings(ca_key, ca_cert)
end
def issue_cert
ca_cert_obj.issue
end
2017-11-07 08:26:14 -05:00
def set_initial_status
2017-11-07 08:52:11 -05:00
return unless not_installable?
2017-11-07 08:26:14 -05:00
self.status = 'installable' if cluster&.platform_kubernetes_active?
end
2017-11-07 09:26:14 -05:00
def install_command
tiller_cert = ca_cert_obj.issue(expires_in: Gitlab::Kubernetes::Helm::Certificate::INFINITE_EXPIRY)
Gitlab::Kubernetes::Helm::InitCommand.new(
name: name,
files: {
'ca.pem': ca_cert,
'cert.pem': tiller_cert.cert_string,
'key.pem': tiller_cert.key_string
}
)
2017-11-07 09:26:14 -05:00
end
def has_ssl?
ca_key.present? && ca_cert.present?
end
end
end
end