Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Jérome Perrin
gitlab-ce
Commits
55ac72e5
Commit
55ac72e5
authored
Sep 26, 2017
by
Shinya Maeda
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Create cluster
parent
3823707a
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
61 additions
and
39 deletions
+61
-39
app/controllers/projects/clusters_controller.rb
app/controllers/projects/clusters_controller.rb
+13
-4
app/views/projects/clusters/_form.html.haml
app/views/projects/clusters/_form.html.haml
+9
-0
app/views/projects/clusters/_login.html.haml
app/views/projects/clusters/_login.html.haml
+2
-0
app/views/projects/clusters/edit.html.haml
app/views/projects/clusters/edit.html.haml
+5
-1
app/views/projects/clusters/new.html.haml
app/views/projects/clusters/new.html.haml
+2
-15
lib/google_api/cloud_platform/client.rb
lib/google_api/cloud_platform/client.rb
+30
-19
No files found.
app/controllers/projects/clusters_controller.rb
View file @
55ac72e5
...
...
@@ -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
...
...
app/views/projects/clusters/_form.html.haml
0 → 100644
View file @
55ac72e5
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
app/views/projects/clusters/_login.html.haml
0 → 100644
View file @
55ac72e5
Login
%p
=
link_to
(
"authenticate from here"
,
@authorize_url
)
app/views/projects/clusters/edit.html.haml
View file @
55ac72e5
edit/show cluster
=
@cluster
.
inspect
-
if
@authorize_url
=
render
"login"
-
else
=
@cluster
.
inspect
\ No newline at end of file
app/views/projects/clusters/new.html.haml
View file @
55ac72e5
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"
lib/google_api/cloud_platform/client.rb
View file @
55ac72e5
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
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
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment