diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-03-07 09:59:51 +0100 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2018-03-07 09:59:51 +0100 |
commit | a2a8e36178853b5f8fa2eda306b33f8f97970745 (patch) | |
tree | 0f8cf46e5c2968bcaa5a42c61f46338f1b921b0b /app/models/concerns/deployment_platform.rb | |
parent | e85e1dbb57af835945b37dc03d1f850cbdaf4d82 (diff) | |
parent | 95016507d49c3099afde0ef3909377bf70061dc3 (diff) | |
download | gitlab-ce-a2a8e36178853b5f8fa2eda306b33f8f97970745.tar.gz |
Merge branch 'master' into backstage/gb/refactor-ci-cd-variables-collections
* master: (6164 commits)
Diffstat (limited to 'app/models/concerns/deployment_platform.rb')
-rw-r--r-- | app/models/concerns/deployment_platform.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/app/models/concerns/deployment_platform.rb b/app/models/concerns/deployment_platform.rb new file mode 100644 index 00000000000..89d0474a596 --- /dev/null +++ b/app/models/concerns/deployment_platform.rb @@ -0,0 +1,48 @@ +module DeploymentPlatform + def deployment_platform + @deployment_platform ||= + find_cluster_platform_kubernetes || + find_kubernetes_service_integration || + build_cluster_and_deployment_platform + end + + private + + def find_cluster_platform_kubernetes + clusters.find_by(enabled: true)&.platform_kubernetes + end + + def find_kubernetes_service_integration + services.deployment.reorder(nil).find_by(active: true) + end + + def build_cluster_and_deployment_platform + return unless kubernetes_service_template + + cluster = ::Clusters::Cluster.create(cluster_attributes_from_service_template) + cluster.platform_kubernetes if cluster.persisted? + end + + def kubernetes_service_template + @kubernetes_service_template ||= KubernetesService.active.find_by_template + end + + def cluster_attributes_from_service_template + { + name: 'kubernetes-template', + projects: [self], + provider_type: :user, + platform_type: :kubernetes, + platform_kubernetes_attributes: platform_kubernetes_attributes_from_service_template + } + end + + def platform_kubernetes_attributes_from_service_template + { + api_url: kubernetes_service_template.api_url, + ca_pem: kubernetes_service_template.ca_pem, + token: kubernetes_service_template.token, + namespace: kubernetes_service_template.namespace + } + end +end |