Skip to content
Snippets Groups Projects
Commit 55ac72e5 authored by Shinya Maeda's avatar Shinya Maeda
Browse files

Create cluster

parent 3823707a
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -37,10 +37,11 @@ class Projects::ClustersController < Projects::ApplicationController
if params['creation_type'] == 'on_gke'
# Create a cluster on GKE
results = api_client.projects_zones_clusters_create(
params['gcp_project_id'],
params['cluster_zone'],
params['cluster_name'],
params['cluster_size']
project_id: params['gcp_project_id'],
zone: params['cluster_zone'],
cluster_name: params['cluster_name'],
cluster_size: params['cluster_size'],
machine_type: params['machine_type']
)
 
# Update service
Loading
Loading
@@ -90,7 +91,15 @@ class Projects::ClustersController < Projects::ApplicationController
def edit
unless session[GoogleApi::CloudPlatform::Client.token_in_session]
@authorize_url = api_client.authorize_url
render :edit
end
# Get cluster information
api_client.projects_zones_clusters_get(
project_id: cluster.gcp_project_id,
zone: cluster.cluster_zone,
cluster_id: cluster.cluster_name
)
end
 
def update
Loading
Loading
Create a new cluster
%br
Avaiable GCP project lists
%br
Avaiable zones
%br
= link_to "Create on Google Container Engine", namespace_project_clusters_path(@project.namespace, @project, creation_type: 'on_gke', cluster_name: 'gke-test-creation', gcp_project_id: 'gitlab-internal-153318', cluster_zone: 'us-central1-a', cluster_size: '1', project_namespace: 'aaa', machine_type: '???'), method: :post
%br
= link_to "Use existing kubernets cluster", namespace_project_clusters_path(@project.namespace, @project, creation_type: 'manual', end_point: 'xxx.xxx.xxx.xxx', ca_cert: 'xxx...xxx', token: 'xxx', project_namespace: 'aaa'), method: :post
Login
%p= link_to("authenticate from here", @authorize_url)
edit/show cluster
= @cluster.inspect
- if @authorize_url
= render "login"
- else
= @cluster.inspect
\ No newline at end of file
Create a new cluster
%br
- if @authorize_url
I have not authenticated yet. I can authenticate from
= link_to("authenticate from here", @authorize_url)
= render "login"
- else
I have already authenticated.
%br
Avaiable GCP project lists
%br
Avaiable zones
%br
= link_to "Create on Google Container Engine", namespace_project_clusters_path(@project.namespace, @project, creation_type: 'on_gke', cluster_name: 'new-cluster-shinya', gcp_project_id: 'gitlab-internal', cluster_zone: 'gitlab-internal', cluster_size: 'gitlab-internal', project_namespace: 'aaa'), method: :post
%br
= link_to "Use existing kubernets cluster", namespace_project_clusters_path(@project.namespace, @project, creation_type: 'manual', end_point: 'xxx.xxx.xxx.xxx', ca_cert: 'xxx...xxx', token: 'xxx', project_namespace: 'aaa'), method: :post
= render "form"
require 'google/apis/container_v1'
module GoogleApi
module CloudPlatform
class Client < GoogleApi::Authentication
# Google::Apis::ContainerV1::ContainerService.new
class << self
def token_in_session
:cloud_platform_access_token
Loading
Loading
@@ -13,26 +13,37 @@ module GoogleApi
'https://www.googleapis.com/auth/cloud-platform'
end
 
def projects_zones_clusters_get
# TODO:
# service = Google::Apis::ContainerV1::ContainerService.new
# service.authorization = access_token
# project_id = params['project_id']
# ...
# response = service.list_zone_clusters(project_id, zone)
response
def projects_zones_clusters_get(project_id:, zone:, cluster_id:)
service = Google::Apis::ContainerV1::ContainerService.new
service.authorization = access_token
response = service.get_zone_cluster(project_id, zone, cluster_id)
response.to_json
end
 
def projects_zones_clusters_create(gcp_project_id, cluster_zone, cluster_name, cluster_size)
# TODO: Google::Apis::ContainerV1::ContainerService.new
# Responce exmaple
# {"name":"operation-1506424047439-0293f57c","operationType":"CREATE_CLUSTER","selfLink":"https://container.googleapis.com/v1/projects/696404988091/zones/us-central1-a/operations/operation-1506424047439-0293f57c","startTime":"2017-09-26T11:07:27.439033158Z","status":"RUNNING","targetLink":"https://container.googleapis.com/v1/projects/696404988091/zones/us-central1-a/clusters/gke-test-creation","zone":"us-central1-a"}
def projects_zones_clusters_create(project_id:, zone:, cluster_name:, cluster_size:, machine_type:)
service = Google::Apis::ContainerV1::ContainerService.new
service.authorization = access_token
request_body = Google::Apis::ContainerV1::CreateClusterRequest.new(
{
"cluster": {
"name": cluster_name,
"initial_node_count": cluster_size
}
}
)
# TODO: machine_type : Defailt 3.75 GB
response = service.create_cluster(project_id, zone, request_body)
puts response.to_json
response.to_json
end
 
# TODO: Debug
{
'end_point' => 'https://111.111.111.111',
'ca_cert' => 'XXXXXXXXXXXXXXXXXX',
'username' => 'AAA',
'password' => 'BBB'
}
def get_status(project_id:, zone:, cluster_name:, cluster_size:, machine_type:)
# Observe
end
end
end
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment