Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-08-19 12:08:42 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-08-19 12:08:42 +0300
commitb76ae638462ab0f673e5915986070518dd3f9ad3 (patch)
treebdab0533383b52873be0ec0eb4d3c66598ff8b91 /lib/gitlab/kubernetes
parent434373eabe7b4be9593d18a585fb763f1e5f1a6f (diff)
Add latest changes from gitlab-org/gitlab@14-2-stable-eev14.2.0-rc42
Diffstat (limited to 'lib/gitlab/kubernetes')
-rw-r--r--lib/gitlab/kubernetes/default_namespace.rb17
-rw-r--r--lib/gitlab/kubernetes/kubeconfig/entry/cluster.rb43
-rw-r--r--lib/gitlab/kubernetes/kubeconfig/entry/context.rb39
-rw-r--r--lib/gitlab/kubernetes/kubeconfig/entry/user.rb29
-rw-r--r--lib/gitlab/kubernetes/kubeconfig/template.rb59
5 files changed, 180 insertions, 7 deletions
diff --git a/lib/gitlab/kubernetes/default_namespace.rb b/lib/gitlab/kubernetes/default_namespace.rb
index c95362b024b..c22c2fe394d 100644
--- a/lib/gitlab/kubernetes/default_namespace.rb
+++ b/lib/gitlab/kubernetes/default_namespace.rb
@@ -36,14 +36,17 @@ module Gitlab
end
end
- def default_project_namespace(slug)
- namespace_slug = "#{project.path}-#{project.id}".downcase
-
- if cluster.namespace_per_environment?
- namespace_slug += "-#{slug}"
- end
+ def default_project_namespace(environment_slug)
+ maybe_environment_suffix = cluster.namespace_per_environment? ? "-#{environment_slug}" : ''
+ suffix = "-#{project.id}#{maybe_environment_suffix}"
+ namespace = project_path_slug(63 - suffix.length) + suffix
+ Gitlab::NamespaceSanitizer.sanitize(namespace)
+ end
- Gitlab::NamespaceSanitizer.sanitize(namespace_slug)
+ def project_path_slug(max_length)
+ Gitlab::NamespaceSanitizer
+ .sanitize(project.path.downcase)
+ .first(max_length)
end
##
diff --git a/lib/gitlab/kubernetes/kubeconfig/entry/cluster.rb b/lib/gitlab/kubernetes/kubeconfig/entry/cluster.rb
new file mode 100644
index 00000000000..836517d4e1f
--- /dev/null
+++ b/lib/gitlab/kubernetes/kubeconfig/entry/cluster.rb
@@ -0,0 +1,43 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Kubernetes
+ module Kubeconfig
+ module Entry
+ class Cluster
+ attr_reader :name
+
+ def initialize(name:, url:, ca_pem: nil)
+ @name = name
+ @url = url
+ @ca_pem = ca_pem
+ end
+
+ def to_h
+ {
+ name: name,
+ cluster: cluster
+ }
+ end
+
+ private
+
+ attr_reader :url, :ca_pem
+
+ def cluster
+ {
+ server: url,
+ 'certificate-authority-data': certificate_authority_data
+ }.compact
+ end
+
+ def certificate_authority_data
+ return unless ca_pem.present?
+
+ Base64.strict_encode64(ca_pem)
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/kubernetes/kubeconfig/entry/context.rb b/lib/gitlab/kubernetes/kubeconfig/entry/context.rb
new file mode 100644
index 00000000000..8ff17ab9cff
--- /dev/null
+++ b/lib/gitlab/kubernetes/kubeconfig/entry/context.rb
@@ -0,0 +1,39 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Kubernetes
+ module Kubeconfig
+ module Entry
+ class Context
+ attr_reader :name
+
+ def initialize(name:, cluster:, user:, namespace: nil)
+ @name = name
+ @cluster = cluster
+ @user = user
+ @namespace = namespace
+ end
+
+ def to_h
+ {
+ name: name,
+ context: context
+ }
+ end
+
+ private
+
+ attr_reader :cluster, :user, :namespace
+
+ def context
+ {
+ cluster: cluster,
+ namespace: namespace,
+ user: user
+ }.compact
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/kubernetes/kubeconfig/entry/user.rb b/lib/gitlab/kubernetes/kubeconfig/entry/user.rb
new file mode 100644
index 00000000000..784f6d67802
--- /dev/null
+++ b/lib/gitlab/kubernetes/kubeconfig/entry/user.rb
@@ -0,0 +1,29 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Kubernetes
+ module Kubeconfig
+ module Entry
+ class User
+ attr_reader :name
+
+ def initialize(name:, token:)
+ @name = name
+ @token = token
+ end
+
+ def to_h
+ {
+ name: name,
+ user: { token: token }
+ }
+ end
+
+ private
+
+ attr_reader :token
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/kubernetes/kubeconfig/template.rb b/lib/gitlab/kubernetes/kubeconfig/template.rb
new file mode 100644
index 00000000000..da0861ee86a
--- /dev/null
+++ b/lib/gitlab/kubernetes/kubeconfig/template.rb
@@ -0,0 +1,59 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Kubernetes
+ module Kubeconfig
+ class Template
+ ENTRIES = {
+ cluster: Gitlab::Kubernetes::Kubeconfig::Entry::Cluster,
+ user: Gitlab::Kubernetes::Kubeconfig::Entry::User,
+ context: Gitlab::Kubernetes::Kubeconfig::Entry::Context
+ }.freeze
+
+ def initialize
+ @clusters = []
+ @users = []
+ @contexts = []
+ end
+
+ def valid?
+ contexts.present?
+ end
+
+ def add_cluster(**args)
+ clusters << new_entry(:cluster, **args)
+ end
+
+ def add_user(**args)
+ users << new_entry(:user, **args)
+ end
+
+ def add_context(**args)
+ contexts << new_entry(:context, **args)
+ end
+
+ def to_h
+ {
+ apiVersion: 'v1',
+ kind: 'Config',
+ clusters: clusters.map(&:to_h),
+ users: users.map(&:to_h),
+ contexts: contexts.map(&:to_h)
+ }
+ end
+
+ def to_yaml
+ YAML.dump(to_h.deep_stringify_keys)
+ end
+
+ private
+
+ attr_reader :clusters, :users, :contexts
+
+ def new_entry(entry, **args)
+ ENTRIES.fetch(entry).new(**args)
+ end
+ end
+ end
+ end
+end