summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2017-10-04 00:20:47 +0200
committerKamil Trzcinski <ayufan@ayufan.eu>2017-10-04 00:20:47 +0200
commitc6d53250de7f439bc25740913d85ada6e3b2fed4 (patch)
treeb93a8c9556851fda197f5a9bd7bfd6b540e2d44d /app
parentc471430a13c79a82555ee171fecdf45b882a3c19 (diff)
downloadgitlab-ce-c6d53250de7f439bc25740913d85ada6e3b2fed4.tar.gz
Specify defaults, fix policies, fix db columns
Diffstat (limited to 'app')
-rw-r--r--app/models/gcp/cluster.rb52
-rw-r--r--app/policies/gcp/cluster_policy.rb6
-rw-r--r--app/services/ci/integrate_cluster_service.rb2
-rw-r--r--app/views/projects/clusters/_form.html.haml2
-rw-r--r--app/views/projects/clusters/show.html.haml19
-rw-r--r--app/workers/concerns/cluster_queue.rb2
6 files changed, 51 insertions, 32 deletions
diff --git a/app/models/gcp/cluster.rb b/app/models/gcp/cluster.rb
index 543505c24c2..74644207afd 100644
--- a/app/models/gcp/cluster.rb
+++ b/app/models/gcp/cluster.rb
@@ -6,6 +6,10 @@ module Gcp
belongs_to :user
belongs_to :service
+ default_value_for :gcp_cluster_zone, 'us-central1-a'
+ default_value_for :gcp_cluster_size, 3
+ default_value_for :gcp_machine_type, 'n1-standard-4'
+
attr_encrypted :password,
mode: :per_attribute_iv,
key: Gitlab::Application.secrets.db_key_base,
@@ -28,6 +32,35 @@ module Gcp
errored: 4
}
+ validates :gcp_project_id,
+ length: 1..63,
+ format: {
+ with: Gitlab::Regex.kubernetes_namespace_regex,
+ message: Gitlab::Regex.kubernetes_namespace_regex_message
+ }
+
+ validates :gcp_cluster_name,
+ length: 1..63,
+ format: {
+ with: Gitlab::Regex.kubernetes_namespace_regex,
+ message: Gitlab::Regex.kubernetes_namespace_regex_message
+ }
+
+ validates :gcp_cluster_zone, presence: true
+ validates :gcp_cluster_size, presence: true,
+ numericality: { only_integer: true, greater_than: 0 }
+
+ validates :project_namespace,
+ allow_blank: true,
+ length: 1..63,
+ format: {
+ with: Gitlab::Regex.kubernetes_namespace_regex,
+ message: Gitlab::Regex.kubernetes_namespace_regex_message
+ }
+
+ # if we do not do status transition we prevent change
+ validate :restrict_modification, on: :update, unless: :status_changed?
+
state_machine :status, initial: :scheduled do
event :creating do
transition any - [:creating] => :creating
@@ -52,22 +85,9 @@ module Gcp
end
end
- validates :gcp_project_id, presence: true
- validates :gcp_cluster_zone, presence: true
- validates :gcp_cluster_name, presence: true
- validates :gcp_cluster_size, presence: true,
- numericality: { only_integer: true, greater_than: 0 }
-
- validates :project_namespace,
- allow_blank: true,
- length: 1..63,
- format: {
- with: Gitlab::Regex.kubernetes_namespace_regex,
- message: Gitlab::Regex.kubernetes_namespace_regex_message
- }
-
- # if we do not do status transition we prevent change
- validate :restrict_modification, on: :update, unless: :status_changed?
+ def project_namespace_placeholder
+ "#{project.path}-#{project.id}"
+ end
def on_creation?
scheduled? || creating?
diff --git a/app/policies/gcp/cluster_policy.rb b/app/policies/gcp/cluster_policy.rb
index dd0a5bff146..e77173ea6e1 100644
--- a/app/policies/gcp/cluster_policy.rb
+++ b/app/policies/gcp/cluster_policy.rb
@@ -4,11 +4,7 @@ module Gcp
delegate { @subject.project }
- condition(:safe_to_change) do
- can?(:master_access) && !cluster.on_creation?
- end
-
- rule { safe_to_change }.policy do
+ rule { can?(:master_access) }.policy do
enable :update_cluster
enable :admin_cluster
end
diff --git a/app/services/ci/integrate_cluster_service.rb b/app/services/ci/integrate_cluster_service.rb
index 959c425fe74..ae7dccb0f42 100644
--- a/app/services/ci/integrate_cluster_service.rb
+++ b/app/services/ci/integrate_cluster_service.rb
@@ -9,7 +9,7 @@ module Ci
kubernetes_token: token,
username: username,
password: password,
- service: project.find_or_initialize_service('kubernetes'),
+ service: cluster.project.find_or_initialize_service('kubernetes'),
status_event: :created)
cluster.service.update!(
diff --git a/app/views/projects/clusters/_form.html.haml b/app/views/projects/clusters/_form.html.haml
index a59c48b2c68..c9ec25d2072 100644
--- a/app/views/projects/clusters/_form.html.haml
+++ b/app/views/projects/clusters/_form.html.haml
@@ -26,7 +26,7 @@
.form-group
= field.label :project_namespace
- = field.text_field :project_namespace, class: 'form-control'
+ = field.text_field :project_namespace, class: 'form-control', placeholder: @cluster.project_namespace_placeholder
.form-group
= field.label :gcp_machine_type
diff --git a/app/views/projects/clusters/show.html.haml b/app/views/projects/clusters/show.html.haml
index 3643ba40ee7..d7839504f32 100644
--- a/app/views/projects/clusters/show.html.haml
+++ b/app/views/projects/clusters/show.html.haml
@@ -29,7 +29,7 @@
= s_('ClusterIntegration|Save changes')
- - if can?(current_user, :update_cluster, @cluster) && @cluster.on_creation?
+ - if can?(current_user, :admin_cluster, @cluster)
.form_group
%label
= s_('ClusterIntegration|Google container engine')
@@ -37,15 +37,18 @@
- link_gke = link_to(s_('ClusterIntegration|Google Container Engine'), '', target: '_blank', rel: 'noopener noreferrer')
= s_('ClusterIntegration|Manage your cluster by visiting %{link_gke}').html_safe % { link_gke: link_gke }
- .hidden.js-cluster-error.alert.alert-danger{ role: 'alert' }
- = s_('ClusterIntegration|Something went wrong while creating your cluster on Google Container Engine.')
- %code.js-error-reason
+ - if @cluster.errored?
+ .js-cluster-error.alert.alert-danger{ role: 'alert' }
+ = s_('ClusterIntegration|Something went wrong while creating your cluster on Google Container Engine.')
+ %code.js-error-reason
- .hidden.js-cluster-success.alert.alert-info{ role: 'alert' }
- = s_('ClusterIntegration|Cluster was successfully created on Google Container Engine.')
+ - if @cluster.on_creation?
+ .js-cluster-creating.alert.alert-info{ role: 'alert' }
+ = s_('ClusterIntegration|Cluster is being created on Google Container Engine...')
- .hidden.js-cluster-creating.alert.alert-info{ role: 'alert' }
- = s_('ClusterIntegration|Cluster is being created on Google Container Engine...')
+ - if @cluster.created?
+ .js-cluster-success.alert.alert-info{ role: 'alert' }
+ = s_('ClusterIntegration|Cluster was successfully created on Google Container Engine.')
.form_group
%label
diff --git a/app/workers/concerns/cluster_queue.rb b/app/workers/concerns/cluster_queue.rb
index 736ae90303c..a5074d13220 100644
--- a/app/workers/concerns/cluster_queue.rb
+++ b/app/workers/concerns/cluster_queue.rb
@@ -5,6 +5,6 @@ module ClusterQueue
extend ActiveSupport::Concern
included do
- sidekiq_options queue: :manage_cluster
+ sidekiq_options queue: :gcp_cluster
end
end