Create cluster
This commit is contained in:
parent
3823707a0b
commit
55ac72e56e
|
@ -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
|
||||
|
@ -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
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
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
|
|
@ -0,0 +1,2 @@
|
|||
Login
|
||||
%p= link_to("authenticate from here", @authorize_url)
|
|
@ -1,2 +1,6 @@
|
|||
edit/show cluster
|
||||
= @cluster.inspect
|
||||
|
||||
- if @authorize_url
|
||||
= render "login"
|
||||
- else
|
||||
= @cluster.inspect
|
|
@ -1,17 +1,4 @@
|
|||
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"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
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
|
||||
|
@ -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
|
||||
|
||||
# TODO: Debug
|
||||
{
|
||||
'end_point' => 'https://111.111.111.111',
|
||||
'ca_cert' => 'XXXXXXXXXXXXXXXXXX',
|
||||
'username' => 'AAA',
|
||||
'password' => 'BBB'
|
||||
}
|
||||
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
|
||||
|
||||
def get_status(project_id:, zone:, cluster_name:, cluster_size:, machine_type:)
|
||||
# Observe
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue