debian-mirror-gitlab/app/models/clusters/kubernetes_namespace.rb

57 lines
1.9 KiB
Ruby
Raw Normal View History

2018-12-13 13:39:08 +05:30
# frozen_string_literal: true
module Clusters
2019-07-07 11:18:12 +05:30
class KubernetesNamespace < ApplicationRecord
2018-12-13 13:39:08 +05:30
include Gitlab::Kubernetes
self.table_name = 'clusters_kubernetes_namespaces'
belongs_to :cluster_project, class_name: 'Clusters::Project'
belongs_to :cluster, class_name: 'Clusters::Cluster'
belongs_to :project, class_name: '::Project'
2019-10-12 21:52:04 +05:30
belongs_to :environment, optional: true
2018-12-13 13:39:08 +05:30
has_one :platform_kubernetes, through: :cluster
validates :namespace, presence: true
validates :namespace, uniqueness: { scope: :cluster_id }
2019-10-12 21:52:04 +05:30
validates :environment_id, uniqueness: { scope: [:cluster_id, :project_id] }, allow_nil: true
2018-12-13 13:39:08 +05:30
2019-02-15 15:39:39 +05:30
validates :service_account_name, presence: true
2018-12-13 13:39:08 +05:30
delegate :ca_pem, to: :platform_kubernetes, allow_nil: true
delegate :api_url, to: :platform_kubernetes, allow_nil: true
attr_encrypted :service_account_token,
mode: :per_attribute_iv,
key: Settings.attr_encrypted_db_key_base_truncated,
algorithm: 'aes-256-cbc'
scope :has_service_account_token, -> { where.not(encrypted_service_account_token: nil) }
2019-12-21 20:55:43 +05:30
scope :with_environment_name, -> (name) { joins(:environment).where(environments: { name: name }) }
2018-12-13 13:39:08 +05:30
def token_name
"#{namespace}-token"
end
def predefined_variables
Gitlab::Ci::Variables::Collection.new.tap do |variables|
variables
2019-02-15 15:39:39 +05:30
.append(key: 'KUBE_SERVICE_ACCOUNT', value: service_account_name.to_s)
.append(key: 'KUBE_NAMESPACE', value: namespace.to_s)
2019-07-07 11:18:12 +05:30
.append(key: 'KUBE_TOKEN', value: service_account_token.to_s, public: false, masked: true)
2019-02-15 15:39:39 +05:30
.append(key: 'KUBECONFIG', value: kubeconfig, public: false, file: true)
2018-12-13 13:39:08 +05:30
end
end
2019-02-15 15:39:39 +05:30
private
2018-12-13 13:39:08 +05:30
def kubeconfig
to_kubeconfig(
url: api_url,
namespace: namespace,
token: service_account_token,
ca_pem: ca_pem)
end
end
end