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
acbceea7
Commit
acbceea7
authored
Feb 28, 2022
by
Tiger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Disable clusters controllers if :certificate_based_clusters is disabled
https://gitlab.com/gitlab-org/gitlab/-/issues/351675
parent
8908711a
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
173 additions
and
0 deletions
+173
-0
app/controllers/clusters/clusters_controller.rb
app/controllers/clusters/clusters_controller.rb
+11
-0
spec/controllers/admin/clusters_controller_spec.rb
spec/controllers/admin/clusters_controller_spec.rb
+44
-0
spec/controllers/groups/clusters_controller_spec.rb
spec/controllers/groups/clusters_controller_spec.rb
+44
-0
spec/controllers/projects/clusters_controller_spec.rb
spec/controllers/projects/clusters_controller_spec.rb
+44
-0
spec/support/shared_examples/controllers/clusters_controller_shared_examples.rb
...amples/controllers/clusters_controller_shared_examples.rb
+30
-0
No files found.
app/controllers/clusters/clusters_controller.rb
View file @
acbceea7
...
@@ -14,6 +14,7 @@ class Clusters::ClustersController < Clusters::BaseController
...
@@ -14,6 +14,7 @@ class Clusters::ClustersController < Clusters::BaseController
before_action
:authorize_create_cluster!
,
only:
[
:new
,
:authorize_aws_role
]
before_action
:authorize_create_cluster!
,
only:
[
:new
,
:authorize_aws_role
]
before_action
:authorize_update_cluster!
,
only:
[
:update
]
before_action
:authorize_update_cluster!
,
only:
[
:update
]
before_action
:update_applications_status
,
only:
[
:cluster_status
]
before_action
:update_applications_status
,
only:
[
:cluster_status
]
before_action
:ensure_feature_enabled!
,
except: :index
helper_method
:token_in_session
helper_method
:token_in_session
...
@@ -172,7 +173,17 @@ class Clusters::ClustersController < Clusters::BaseController
...
@@ -172,7 +173,17 @@ class Clusters::ClustersController < Clusters::BaseController
private
private
def
certificate_based_clusters_enabled?
Feature
.
enabled?
(
:certificate_based_clusters
,
clusterable
,
default_enabled: :yaml
,
type: :ops
)
end
def
ensure_feature_enabled!
render_404
unless
certificate_based_clusters_enabled?
end
def
cluster_list
def
cluster_list
return
[]
unless
certificate_based_clusters_enabled?
finder
=
ClusterAncestorsFinder
.
new
(
clusterable
.
subject
,
current_user
)
finder
=
ClusterAncestorsFinder
.
new
(
clusterable
.
subject
,
current_user
)
clusters
=
finder
.
execute
clusters
=
finder
.
execute
...
...
spec/controllers/admin/clusters_controller_spec.rb
View file @
acbceea7
...
@@ -27,6 +27,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -27,6 +27,10 @@ RSpec.describe Admin::ClustersController do
create
(
:cluster
,
:disabled
,
:provided_by_gcp
,
:production_environment
,
:instance
)
create
(
:cluster
,
:disabled
,
:provided_by_gcp
,
:production_environment
,
:instance
)
end
end
include_examples
':certificate_based_clusters feature flag index responses'
do
let
(
:subject
)
{
get_index
}
end
it
'lists available clusters and displays html'
do
it
'lists available clusters and displays html'
do
get_index
get_index
...
@@ -105,6 +109,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -105,6 +109,10 @@ RSpec.describe Admin::ClustersController do
get
:new
,
params:
{
provider:
provider
}
get
:new
,
params:
{
provider:
provider
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality for new cluster'
do
describe
'functionality for new cluster'
do
context
'when omniauth has been configured'
do
context
'when omniauth has been configured'
do
let
(
:key
)
{
'secret-key'
}
let
(
:key
)
{
'secret-key'
}
...
@@ -226,6 +234,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -226,6 +234,10 @@ RSpec.describe Admin::ClustersController do
post
:create_gcp
,
params:
params
post
:create_gcp
,
params:
params
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
post_create_gcp
}
end
describe
'functionality'
do
describe
'functionality'
do
context
'when access token is valid'
do
context
'when access token is valid'
do
before
do
before
do
...
@@ -318,6 +330,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -318,6 +330,10 @@ RSpec.describe Admin::ClustersController do
post
:create_aws
,
params:
params
post
:create_aws
,
params:
params
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
post_create_aws
}
end
it
'creates a new cluster'
do
it
'creates a new cluster'
do
expect
(
ClusterProvisionWorker
).
to
receive
(
:perform_async
)
expect
(
ClusterProvisionWorker
).
to
receive
(
:perform_async
)
expect
{
post_create_aws
}.
to
change
{
Clusters
::
Cluster
.
count
}
expect
{
post_create_aws
}.
to
change
{
Clusters
::
Cluster
.
count
}
...
@@ -375,6 +391,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -375,6 +391,10 @@ RSpec.describe Admin::ClustersController do
post
:create_user
,
params:
params
post
:create_user
,
params:
params
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
post_create_user
}
end
describe
'functionality'
do
describe
'functionality'
do
context
'when creates a cluster'
do
context
'when creates a cluster'
do
it
'creates a new cluster'
do
it
'creates a new cluster'
do
...
@@ -445,6 +465,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -445,6 +465,10 @@ RSpec.describe Admin::ClustersController do
post
:authorize_aws_role
,
params:
params
post
:authorize_aws_role
,
params:
params
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
before
do
before
do
allow
(
Clusters
::
Aws
::
FetchCredentialsService
).
to
receive
(
:new
)
allow
(
Clusters
::
Aws
::
FetchCredentialsService
).
to
receive
(
:new
)
.
and_return
(
double
(
execute:
double
))
.
and_return
(
double
(
execute:
double
))
...
@@ -495,6 +519,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -495,6 +519,10 @@ RSpec.describe Admin::ClustersController do
delete
:clear_cache
,
params:
{
id:
cluster
}
delete
:clear_cache
,
params:
{
id:
cluster
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
it
'deletes the namespaces associated with the cluster'
do
it
'deletes the namespaces associated with the cluster'
do
expect
{
go
}.
to
change
{
Clusters
::
KubernetesNamespace
.
count
}
expect
{
go
}.
to
change
{
Clusters
::
KubernetesNamespace
.
count
}
...
@@ -520,6 +548,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -520,6 +548,10 @@ RSpec.describe Admin::ClustersController do
format: :json
format: :json
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
get_cluster_status
}
end
describe
'functionality'
do
describe
'functionality'
do
it
'responds with matching schema'
do
it
'responds with matching schema'
do
get_cluster_status
get_cluster_status
...
@@ -555,6 +587,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -555,6 +587,10 @@ RSpec.describe Admin::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
get_show
}
end
describe
'functionality'
do
describe
'functionality'
do
render_views
render_views
...
@@ -603,6 +639,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -603,6 +639,10 @@ RSpec.describe Admin::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
put_update
}
end
it
'updates and redirects back to show page'
do
it
'updates and redirects back to show page'
do
put_update
put_update
...
@@ -694,6 +734,10 @@ RSpec.describe Admin::ClustersController do
...
@@ -694,6 +734,10 @@ RSpec.describe Admin::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
delete_destroy
}
end
describe
'functionality'
do
describe
'functionality'
do
context
'when cluster is provided by GCP'
do
context
'when cluster is provided by GCP'
do
context
'when cluster is created'
do
context
'when cluster is created'
do
...
...
spec/controllers/groups/clusters_controller_spec.rb
View file @
acbceea7
...
@@ -32,6 +32,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -32,6 +32,10 @@ RSpec.describe Groups::ClustersController do
create
(
:cluster
,
:disabled
,
:provided_by_gcp
,
:production_environment
,
cluster_type: :group_type
,
groups:
[
group
])
create
(
:cluster
,
:disabled
,
:provided_by_gcp
,
:production_environment
,
cluster_type: :group_type
,
groups:
[
group
])
end
end
include_examples
':certificate_based_clusters feature flag index responses'
do
let
(
:subject
)
{
go
}
end
it
'lists available clusters and renders html'
do
it
'lists available clusters and renders html'
do
go
go
...
@@ -116,6 +120,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -116,6 +120,10 @@ RSpec.describe Groups::ClustersController do
get
:new
,
params:
{
group_id:
group
,
provider:
provider
}
get
:new
,
params:
{
group_id:
group
,
provider:
provider
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality for new cluster'
do
describe
'functionality for new cluster'
do
context
'when omniauth has been configured'
do
context
'when omniauth has been configured'
do
let
(
:key
)
{
'secret-key'
}
let
(
:key
)
{
'secret-key'
}
...
@@ -255,6 +263,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -255,6 +263,10 @@ RSpec.describe Groups::ClustersController do
post
:create_gcp
,
params:
params
.
merge
(
group_id:
group
)
post
:create_gcp
,
params:
params
.
merge
(
group_id:
group
)
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality'
do
describe
'functionality'
do
context
'when access token is valid'
do
context
'when access token is valid'
do
before
do
before
do
...
@@ -349,6 +361,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -349,6 +361,10 @@ RSpec.describe Groups::ClustersController do
post
:create_user
,
params:
params
.
merge
(
group_id:
group
)
post
:create_user
,
params:
params
.
merge
(
group_id:
group
)
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality'
do
describe
'functionality'
do
context
'when creates a cluster'
do
context
'when creates a cluster'
do
it
'creates a new cluster'
do
it
'creates a new cluster'
do
...
@@ -457,6 +473,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -457,6 +473,10 @@ RSpec.describe Groups::ClustersController do
post
:create_aws
,
params:
params
.
merge
(
group_id:
group
)
post
:create_aws
,
params:
params
.
merge
(
group_id:
group
)
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
post_create_aws
}
end
it
'creates a new cluster'
do
it
'creates a new cluster'
do
expect
(
ClusterProvisionWorker
).
to
receive
(
:perform_async
)
expect
(
ClusterProvisionWorker
).
to
receive
(
:perform_async
)
expect
{
post_create_aws
}.
to
change
{
Clusters
::
Cluster
.
count
}
expect
{
post_create_aws
}.
to
change
{
Clusters
::
Cluster
.
count
}
...
@@ -519,6 +539,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -519,6 +539,10 @@ RSpec.describe Groups::ClustersController do
post
:authorize_aws_role
,
params:
params
.
merge
(
group_id:
group
)
post
:authorize_aws_role
,
params:
params
.
merge
(
group_id:
group
)
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
before
do
before
do
allow
(
Clusters
::
Aws
::
FetchCredentialsService
).
to
receive
(
:new
)
allow
(
Clusters
::
Aws
::
FetchCredentialsService
).
to
receive
(
:new
)
.
and_return
(
double
(
execute:
double
))
.
and_return
(
double
(
execute:
double
))
...
@@ -579,6 +603,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -579,6 +603,10 @@ RSpec.describe Groups::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
it
'deletes the namespaces associated with the cluster'
do
it
'deletes the namespaces associated with the cluster'
do
expect
{
go
}.
to
change
{
Clusters
::
KubernetesNamespace
.
count
}
expect
{
go
}.
to
change
{
Clusters
::
KubernetesNamespace
.
count
}
...
@@ -611,6 +639,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -611,6 +639,10 @@ RSpec.describe Groups::ClustersController do
format: :json
format: :json
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality'
do
describe
'functionality'
do
it
'responds with matching schema'
do
it
'responds with matching schema'
do
go
go
...
@@ -651,6 +683,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -651,6 +683,10 @@ RSpec.describe Groups::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality'
do
describe
'functionality'
do
render_views
render_views
...
@@ -705,6 +741,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -705,6 +741,10 @@ RSpec.describe Groups::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
it
'updates and redirects back to show page'
do
it
'updates and redirects back to show page'
do
go
go
...
@@ -802,6 +842,10 @@ RSpec.describe Groups::ClustersController do
...
@@ -802,6 +842,10 @@ RSpec.describe Groups::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality'
do
describe
'functionality'
do
context
'when cluster is provided by GCP'
do
context
'when cluster is provided by GCP'
do
context
'when cluster is created'
do
context
'when cluster is created'
do
...
...
spec/controllers/projects/clusters_controller_spec.rb
View file @
acbceea7
...
@@ -26,6 +26,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -26,6 +26,10 @@ RSpec.describe Projects::ClustersController do
let!
(
:enabled_cluster
)
{
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
}
let!
(
:enabled_cluster
)
{
create
(
:cluster
,
:provided_by_gcp
,
projects:
[
project
])
}
let!
(
:disabled_cluster
)
{
create
(
:cluster
,
:disabled
,
:provided_by_gcp
,
:production_environment
,
projects:
[
project
])
}
let!
(
:disabled_cluster
)
{
create
(
:cluster
,
:disabled
,
:provided_by_gcp
,
:production_environment
,
projects:
[
project
])
}
include_examples
':certificate_based_clusters feature flag index responses'
do
let
(
:subject
)
{
go
}
end
it
'lists available clusters and renders html'
do
it
'lists available clusters and renders html'
do
go
go
...
@@ -118,6 +122,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -118,6 +122,10 @@ RSpec.describe Projects::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality for new cluster'
do
describe
'functionality for new cluster'
do
context
'when omniauth has been configured'
do
context
'when omniauth has been configured'
do
let
(
:key
)
{
'secret-key'
}
let
(
:key
)
{
'secret-key'
}
...
@@ -264,6 +272,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -264,6 +272,10 @@ RSpec.describe Projects::ClustersController do
post
:create_gcp
,
params:
params
.
merge
(
namespace_id:
project
.
namespace
,
project_id:
project
)
post
:create_gcp
,
params:
params
.
merge
(
namespace_id:
project
.
namespace
,
project_id:
project
)
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality'
do
describe
'functionality'
do
context
'when access token is valid'
do
context
'when access token is valid'
do
before
do
before
do
...
@@ -360,6 +372,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -360,6 +372,10 @@ RSpec.describe Projects::ClustersController do
post
:create_user
,
params:
params
.
merge
(
namespace_id:
project
.
namespace
,
project_id:
project
)
post
:create_user
,
params:
params
.
merge
(
namespace_id:
project
.
namespace
,
project_id:
project
)
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality'
do
describe
'functionality'
do
context
'when creates a cluster'
do
context
'when creates a cluster'
do
it
'creates a new cluster'
do
it
'creates a new cluster'
do
...
@@ -477,6 +493,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -477,6 +493,10 @@ RSpec.describe Projects::ClustersController do
post
:create_aws
,
params:
params
.
merge
(
namespace_id:
project
.
namespace
,
project_id:
project
)
post
:create_aws
,
params:
params
.
merge
(
namespace_id:
project
.
namespace
,
project_id:
project
)
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
post_create_aws
}
end
it
'creates a new cluster'
do
it
'creates a new cluster'
do
expect
(
ClusterProvisionWorker
).
to
receive
(
:perform_async
)
expect
(
ClusterProvisionWorker
).
to
receive
(
:perform_async
)
expect
{
post_create_aws
}.
to
change
{
Clusters
::
Cluster
.
count
}
expect
{
post_create_aws
}.
to
change
{
Clusters
::
Cluster
.
count
}
...
@@ -548,6 +568,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -548,6 +568,10 @@ RSpec.describe Projects::ClustersController do
.
and_return
(
double
(
execute:
double
))
.
and_return
(
double
(
execute:
double
))
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
it
'updates the associated role with the supplied ARN'
do
it
'updates the associated role with the supplied ARN'
do
go
go
...
@@ -603,6 +627,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -603,6 +627,10 @@ RSpec.describe Projects::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
it
'deletes the namespaces associated with the cluster'
do
it
'deletes the namespaces associated with the cluster'
do
expect
{
go
}.
to
change
{
Clusters
::
KubernetesNamespace
.
count
}
expect
{
go
}.
to
change
{
Clusters
::
KubernetesNamespace
.
count
}
...
@@ -640,6 +668,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -640,6 +668,10 @@ RSpec.describe Projects::ClustersController do
format: :json
format: :json
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality'
do
describe
'functionality'
do
it
"responds with matching schema"
do
it
"responds with matching schema"
do
go
go
...
@@ -685,6 +717,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -685,6 +717,10 @@ RSpec.describe Projects::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality'
do
describe
'functionality'
do
render_views
render_views
...
@@ -749,6 +785,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -749,6 +785,10 @@ RSpec.describe Projects::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
it
"updates and redirects back to show page"
do
it
"updates and redirects back to show page"
do
go
go
...
@@ -842,6 +882,10 @@ RSpec.describe Projects::ClustersController do
...
@@ -842,6 +882,10 @@ RSpec.describe Projects::ClustersController do
}
}
end
end
include_examples
':certificate_based_clusters feature flag controller responses'
do
let
(
:subject
)
{
go
}
end
describe
'functionality'
do
describe
'functionality'
do
context
'when cluster is provided by GCP'
do
context
'when cluster is provided by GCP'
do
context
'when cluster is created'
do
context
'when cluster is created'
do
...
...
spec/support/shared_examples/controllers/clusters_controller_shared_examples.rb
View file @
acbceea7
...
@@ -27,3 +27,33 @@ RSpec.shared_examples 'GET new cluster shared examples' do
...
@@ -27,3 +27,33 @@ RSpec.shared_examples 'GET new cluster shared examples' do
end
end
end
end
end
end
RSpec
.
shared_examples
':certificate_based_clusters feature flag index responses'
do
context
'feature flag is disabled'
do
before
do
stub_feature_flags
(
certificate_based_clusters:
false
)
end
it
'does not list any clusters'
do
subject
expect
(
response
).
to
have_gitlab_http_status
(
:ok
)
expect
(
response
).
to
render_template
(
:index
)
expect
(
assigns
(
:clusters
)).
to
be_empty
end
end
end
RSpec
.
shared_examples
':certificate_based_clusters feature flag controller responses'
do
context
'feature flag is disabled'
do
before
do
stub_feature_flags
(
certificate_based_clusters:
false
)
end
it
'responds with :not_found'
do
subject
expect
(
response
).
to
have_gitlab_http_status
(
:not_found
)
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