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
1
Merge Requests
1
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
nexedi
gitlab-ce
Commits
bb46d14e
Commit
bb46d14e
authored
Sep 05, 2019
by
GitLab Bot
Browse files
Options
Browse Files
Download
Plain Diff
Automatic merge of gitlab-org/gitlab-ce master
parents
b0a8bd12
18b4c66d
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
87 additions
and
30 deletions
+87
-30
app/assets/javascripts/clusters/components/applications.vue
app/assets/javascripts/clusters/components/applications.vue
+0
-1
app/models/clusters/applications/jupyter.rb
app/models/clusters/applications/jupyter.rb
+2
-5
app/models/clusters/cluster.rb
app/models/clusters/cluster.rb
+2
-2
changelogs/unreleased/group_level_jupyterhub.yml
changelogs/unreleased/group_level_jupyterhub.yml
+5
-0
spec/frontend/clusters/components/applications_spec.js
spec/frontend/clusters/components/applications_spec.js
+38
-1
spec/models/clusters/applications/jupyter_spec.rb
spec/models/clusters/applications/jupyter_spec.rb
+33
-15
spec/services/clusters/applications/create_service_spec.rb
spec/services/clusters/applications/create_service_spec.rb
+7
-6
No files found.
app/assets/javascripts/clusters/components/applications.vue
View file @
bb46d14e
...
...
@@ -397,7 +397,6 @@ export default {
</div>
</application-row>
<application-row
v-if=
"isProjectCluster"
id=
"jupyter"
:logo-url=
"jupyterhubLogo"
:title=
"applications.jupyter.title"
...
...
app/models/clusters/applications/jupyter.rb
View file @
bb46d14e
...
...
@@ -85,7 +85,8 @@ module Clusters
"clientId"
=>
oauth_application
.
uid
,
"clientSecret"
=>
oauth_application
.
secret
,
"callbackUrl"
=>
callback_url
,
"gitlabProjectIdWhitelist"
=>
[
project_id
]
"gitlabProjectIdWhitelist"
=>
cluster
.
projects
.
ids
,
"gitlabGroupWhitelist"
=>
cluster
.
groups
.
map
(
&
:to_param
)
}
},
"singleuser"
=>
{
...
...
@@ -101,10 +102,6 @@ module Clusters
@crypto_key
||=
SecureRandom
.
hex
(
32
)
end
def
project_id
cluster
&
.
project
&
.
id
end
def
gitlab_url
Gitlab
.
config
.
gitlab
.
url
end
...
...
app/models/clusters/cluster.rb
View file @
bb46d14e
...
...
@@ -10,15 +10,15 @@ module Clusters
self
.
table_name
=
'clusters'
PROJECT_ONLY_APPLICATIONS
=
{
Applications
::
Jupyter
.
application_name
=>
Applications
::
Jupyter
,
Applications
::
Knative
.
application_name
=>
Applications
::
Knative
}.
freeze
APPLICATIONS
=
{
Applications
::
Helm
.
application_name
=>
Applications
::
Helm
,
Applications
::
Ingress
.
application_name
=>
Applications
::
Ingress
,
Applications
::
CertManager
.
application_name
=>
Applications
::
CertManager
,
Applications
::
Prometheus
.
application_name
=>
Applications
::
Prometheus
,
Applications
::
Runner
.
application_name
=>
Applications
::
Runner
,
Applications
::
Prometheus
.
application_name
=>
Applications
::
Prometheus
Applications
::
Jupyter
.
application_name
=>
Applications
::
Jupyter
}.
merge
(
PROJECT_ONLY_APPLICATIONS
).
freeze
DEFAULT_ENVIRONMENT
=
'*'
KUBE_INGRESS_BASE_DOMAIN
=
'KUBE_INGRESS_BASE_DOMAIN'
...
...
changelogs/unreleased/group_level_jupyterhub.yml
0 → 100644
View file @
bb46d14e
---
title
:
Group level JupyterHub
merge_request
:
32512
author
:
type
:
added
spec/frontend/clusters/components/applications_spec.js
View file @
bb46d14e
...
...
@@ -85,7 +85,44 @@ describe('Applications', () => {
});
it
(
'
renders a row for Jupyter
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-cluster-application-row-jupyter
'
)).
toBeNull
();
expect
(
vm
.
$el
.
querySelector
(
'
.js-cluster-application-row-jupyter
'
)).
not
.
toBeNull
();
});
it
(
'
renders a row for Knative
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-cluster-application-row-knative
'
)).
toBeNull
();
});
});
describe
(
'
Instance cluster applications
'
,
()
=>
{
beforeEach
(()
=>
{
vm
=
mountComponent
(
Applications
,
{
type
:
CLUSTER_TYPE
.
INSTANCE
,
applications
:
APPLICATIONS_MOCK_STATE
,
});
});
it
(
'
renders a row for Helm Tiller
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-cluster-application-row-helm
'
)).
not
.
toBeNull
();
});
it
(
'
renders a row for Ingress
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-cluster-application-row-ingress
'
)).
not
.
toBeNull
();
});
it
(
'
renders a row for Cert-Manager
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-cluster-application-row-cert_manager
'
)).
not
.
toBeNull
();
});
it
(
'
renders a row for Prometheus
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-cluster-application-row-prometheus
'
)).
not
.
toBeNull
();
});
it
(
'
renders a row for GitLab Runner
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-cluster-application-row-runner
'
)).
not
.
toBeNull
();
});
it
(
'
renders a row for Jupyter
'
,
()
=>
{
expect
(
vm
.
$el
.
querySelector
(
'
.js-cluster-application-row-jupyter
'
)).
not
.
toBeNull
();
});
it
(
'
renders a row for Knative
'
,
()
=>
{
...
...
spec/models/clusters/applications/jupyter_spec.rb
View file @
bb46d14e
...
...
@@ -81,27 +81,45 @@ describe Clusters::Applications::Jupyter do
end
describe
'#files'
do
let
(
:application
)
{
create
(
:clusters_applications_jupyter
)
}
let
(
:cluster
)
{
create
(
:cluster
,
:with_installed_helm
,
:provided_by_gcp
,
:project
)
}
let
(
:application
)
{
create
(
:clusters_applications_jupyter
,
cluster:
cluster
)
}
let
(
:values
)
{
subject
[
:'values.yaml'
]
}
subject
{
application
.
files
}
it
'includes valid values'
do
expect
(
values
).
to
include
(
'ingress'
)
expect
(
values
).
to
include
(
'hub'
)
expect
(
values
).
to
include
(
'rbac'
)
expect
(
values
).
to
include
(
'proxy'
)
expect
(
values
).
to
include
(
'auth'
)
expect
(
values
).
to
include
(
'singleuser'
)
expect
(
values
).
to
match
(
/clientId: '?
#{
application
.
oauth_application
.
uid
}
/
)
expect
(
values
).
to
match
(
/callbackUrl: '?
#{
application
.
callback_url
}
/
)
expect
(
values
).
to
include
(
"gitlabProjectIdWhitelist:
\n
-
#{
application
.
cluster
.
project
.
id
}
"
)
expect
(
values
).
to
include
(
"c.GitLabOAuthenticator.scope = ['api read_repository write_repository']"
)
expect
(
values
).
to
match
(
/GITLAB_HOST: '?
#{
Gitlab
.
config
.
gitlab
.
host
}
/
)
context
'when cluster belongs to a project'
do
it
'includes valid values'
do
expect
(
values
).
to
include
(
'ingress'
)
expect
(
values
).
to
include
(
'hub'
)
expect
(
values
).
to
include
(
'rbac'
)
expect
(
values
).
to
include
(
'proxy'
)
expect
(
values
).
to
include
(
'auth'
)
expect
(
values
).
to
include
(
'singleuser'
)
expect
(
values
).
to
match
(
/clientId: '?
#{
application
.
oauth_application
.
uid
}
/
)
expect
(
values
).
to
match
(
/callbackUrl: '?
#{
application
.
callback_url
}
/
)
expect
(
values
).
to
include
(
"gitlabProjectIdWhitelist:
\n
-
#{
application
.
cluster
.
project
.
id
}
"
)
expect
(
values
).
to
include
(
"c.GitLabOAuthenticator.scope = ['api read_repository write_repository']"
)
expect
(
values
).
to
match
(
/GITLAB_HOST: '?
#{
Gitlab
.
config
.
gitlab
.
host
}
/
)
expect
(
values
).
to
match
(
/GITLAB_CLUSTER_ID: '?
#{
application
.
cluster
.
id
}
/
)
end
end
context
'when cluster belongs to a project'
do
it
'sets GitLab project id'
do
context
'when cluster belongs to a group'
do
let
(
:group
)
{
create
(
:group
)
}
let
(
:cluster
)
{
create
(
:cluster
,
:with_installed_helm
,
:provided_by_gcp
,
:group
,
groups:
[
group
])
}
it
'includes valid values'
do
expect
(
values
).
to
include
(
'ingress'
)
expect
(
values
).
to
include
(
'hub'
)
expect
(
values
).
to
include
(
'rbac'
)
expect
(
values
).
to
include
(
'proxy'
)
expect
(
values
).
to
include
(
'auth'
)
expect
(
values
).
to
include
(
'singleuser'
)
expect
(
values
).
to
match
(
/clientId: '?
#{
application
.
oauth_application
.
uid
}
/
)
expect
(
values
).
to
match
(
/callbackUrl: '?
#{
application
.
callback_url
}
/
)
expect
(
values
).
to
include
(
"gitlabGroupWhitelist:
\n
-
#{
group
.
to_param
}
"
)
expect
(
values
).
to
include
(
"c.GitLabOAuthenticator.scope = ['api read_repository write_repository']"
)
expect
(
values
).
to
match
(
/GITLAB_HOST: '?
#{
Gitlab
.
config
.
gitlab
.
host
}
/
)
expect
(
values
).
to
match
(
/GITLAB_CLUSTER_ID: '?
#{
application
.
cluster
.
id
}
/
)
end
end
...
...
spec/services/clusters/applications/create_service_spec.rb
View file @
bb46d14e
...
...
@@ -147,12 +147,12 @@ describe Clusters::Applications::CreateService do
using
RSpec
::
Parameterized
::
TableSyntax
where
(
:application
,
:association
,
:allowed
,
:pre_create_helm
)
do
'helm'
|
:application_helm
|
true
|
false
'ingress'
|
:application_ingress
|
true
|
true
'runner'
|
:application_runner
|
true
|
true
'prometheus'
|
:application_prometheus
|
true
|
true
'jupyter'
|
:application_jupyter
|
fals
e
|
true
where
(
:application
,
:association
,
:allowed
,
:pre_create_helm
,
:pre_create_ingress
)
do
'helm'
|
:application_helm
|
true
|
false
|
false
'ingress'
|
:application_ingress
|
true
|
true
|
false
'runner'
|
:application_runner
|
true
|
true
|
false
'prometheus'
|
:application_prometheus
|
true
|
true
|
false
'jupyter'
|
:application_jupyter
|
true
|
tru
e
|
true
end
with_them
do
...
...
@@ -160,6 +160,7 @@ describe Clusters::Applications::CreateService do
klass
=
"Clusters::Applications::
#{
application
.
titleize
}
"
allow_any_instance_of
(
klass
.
constantize
).
to
receive
(
:make_scheduled!
).
and_call_original
create
(
:clusters_applications_helm
,
:installed
,
cluster:
cluster
)
if
pre_create_helm
create
(
:clusters_applications_ingress
,
:installed
,
cluster:
cluster
,
external_hostname:
'example.com'
)
if
pre_create_ingress
end
let
(
:params
)
{
{
application:
application
}
}
...
...
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