summaryrefslogtreecommitdiff
path: root/app/models/project_services
diff options
context:
space:
mode:
authorJames Fargher <proglottis@gmail.com>2019-06-18 00:01:56 +0000
committerThong Kuah <tkuah@gitlab.com>2019-06-18 00:01:56 +0000
commit6b9157d5dc9b45cc6d70f10d075bbf149af5f266 (patch)
tree29161152edd2c8cfbf1e4097beced805cdd47a72 /app/models/project_services
parent04307096bcc776259d8080bebd688ff6073d07c4 (diff)
downloadgitlab-ce-6b9157d5dc9b45cc6d70f10d075bbf149af5f266.tar.gz
Make KubernetesService readonly
We are deprecating this service in favor of instance wide clusters. Therefore we removed some code that is not anymore needed for a readonly cluster and also we added some flags to allow for this deprecation. These flags are to be removed in the next release when we finally completelly remove KubernetesService.
Diffstat (limited to 'app/models/project_services')
-rw-r--r--app/models/project_services/deployment_service.rb39
-rw-r--r--app/models/project_services/kubernetes_service.rb49
-rw-r--r--app/models/project_services/mock_deployment_service.rb16
3 files changed, 47 insertions, 57 deletions
diff --git a/app/models/project_services/deployment_service.rb b/app/models/project_services/deployment_service.rb
deleted file mode 100644
index 80aa2101509..00000000000
--- a/app/models/project_services/deployment_service.rb
+++ /dev/null
@@ -1,39 +0,0 @@
-# frozen_string_literal: true
-
-# Base class for deployment services
-#
-# These services integrate with a deployment solution like Kubernetes/OpenShift,
-# Mesosphere, etc, to provide additional features to environments.
-class DeploymentService < Service
- default_value_for :category, 'deployment'
-
- def self.supported_events
- %w()
- end
-
- def predefined_variables(project:)
- []
- end
-
- # Environments may have a number of terminals. Should return an array of
- # hashes describing them, e.g.:
- #
- # [{
- # :selectors => {"a" => "b", "foo" => "bar"},
- # :url => "wss://external.example.com/exec",
- # :headers => {"Authorization" => "Token xxx"},
- # :subprotocols => ["foo"],
- # :ca_pem => "----BEGIN CERTIFICATE...", # optional
- # :created_at => Time.now.utc
- # }]
- #
- # Selectors should be a set of values that uniquely identify a particular
- # terminal
- def terminals(environment)
- raise NotImplementedError
- end
-
- def can_test?
- false
- end
-end
diff --git a/app/models/project_services/kubernetes_service.rb b/app/models/project_services/kubernetes_service.rb
index aa6b4aa1d5e..edf7e886e77 100644
--- a/app/models/project_services/kubernetes_service.rb
+++ b/app/models/project_services/kubernetes_service.rb
@@ -5,10 +5,12 @@
# We'll move this class to Clusters::Platforms::Kubernetes, which contains exactly the same logic.
# After we've migrated data, we'll remove KubernetesService. This would happen in a few months.
# If you're modyfiyng this class, please note that you should update the same change in Clusters::Platforms::Kubernetes.
-class KubernetesService < DeploymentService
+class KubernetesService < Service
include Gitlab::Kubernetes
include ReactiveCaching
+ default_value_for :category, 'deployment'
+
self.reactive_cache_key = ->(service) { [service.class.model_name.singular, service.project_id] }
# Namespace defaults to the project path, but can be overridden in case that
@@ -32,7 +34,10 @@ class KubernetesService < DeploymentService
before_validation :enforce_namespace_to_lower_case
- validate :deprecation_validation, unless: :template?
+ attr_accessor :skip_deprecation_validation
+
+ validate :deprecation_validation, unless: :skip_deprecation_validation
+
validates :namespace,
allow_blank: true,
length: 1..63,
@@ -44,6 +49,14 @@ class KubernetesService < DeploymentService
after_save :clear_reactive_cache!
+ def self.supported_events
+ %w()
+ end
+
+ def can_test?
+ false
+ end
+
def initialize_properties
self.properties = {} if properties.nil?
end
@@ -56,11 +69,6 @@ class KubernetesService < DeploymentService
'Kubernetes / OpenShift integration'
end
- def help
- 'To enable terminal access to Kubernetes environments, label your ' \
- 'deployments with `app=$CI_ENVIRONMENT_SLUG`'
- end
-
def self.to_param
'kubernetes'
end
@@ -153,14 +161,25 @@ class KubernetesService < DeploymentService
end
def deprecated?
- !active
+ true
+ end
+
+ def editable?
+ false
end
def deprecation_message
- content = _("Kubernetes service integration has been deprecated. %{deprecated_message_content} your Kubernetes clusters using the new <a href=\"%{url}\"/>Kubernetes Clusters</a> page") % {
- deprecated_message_content: deprecated_message_content,
- url: Gitlab::Routing.url_helpers.project_clusters_path(project)
- }
+ content = if project
+ _("Kubernetes service integration has been deprecated. %{deprecated_message_content} your Kubernetes clusters using the new <a href=\"%{url}\"/>Kubernetes Clusters</a> page") % {
+ deprecated_message_content: deprecated_message_content,
+ url: Gitlab::Routing.url_helpers.project_clusters_path(project)
+ }
+ else
+ _("The instance-level Kubernetes service integration is deprecated. Your data has been migrated to an <a href=\"%{url}\"/>instance-level cluster</a>.") % {
+ url: Gitlab::Routing.url_helpers.admin_clusters_path
+ }
+ end
+
content.html_safe
end
@@ -243,10 +262,6 @@ class KubernetesService < DeploymentService
end
def deprecated_message_content
- if active?
- _("Your Kubernetes cluster information on this page is still editable, but you are advised to disable and reconfigure")
- else
- _("Fields on this page are now uneditable, you can configure")
- end
+ _("Fields on this page are now uneditable, you can configure")
end
end
diff --git a/app/models/project_services/mock_deployment_service.rb b/app/models/project_services/mock_deployment_service.rb
index 7ab1687f8ba..1103cb11e73 100644
--- a/app/models/project_services/mock_deployment_service.rb
+++ b/app/models/project_services/mock_deployment_service.rb
@@ -1,6 +1,8 @@
# frozen_string_literal: true
-class MockDeploymentService < DeploymentService
+class MockDeploymentService < Service
+ default_value_for :category, 'deployment'
+
def title
'Mock deployment'
end
@@ -17,4 +19,16 @@ class MockDeploymentService < DeploymentService
def terminals(environment)
[]
end
+
+ def self.supported_events
+ %w()
+ end
+
+ def predefined_variables(project:)
+ []
+ end
+
+ def can_test?
+ false
+ end
end