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
a2ceace1
Commit
a2ceace1
authored
Apr 16, 2019
by
Sean McGivern
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'helm_uninstall_command' into 'master'
Helm DeleteCommand See merge request gitlab-org/gitlab-ce!27348
parents
b754fb88
f8326af5
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
161 additions
and
0 deletions
+161
-0
app/models/clusters/concerns/application_data.rb
app/models/clusters/concerns/application_data.rb
+8
-0
lib/gitlab/kubernetes/helm/delete_command.rb
lib/gitlab/kubernetes/helm/delete_command.rb
+55
-0
spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb
spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb
+72
-0
spec/support/shared_examples/models/cluster_application_helm_cert_examples.rb
...examples/models/cluster_application_helm_cert_examples.rb
+26
-0
No files found.
app/models/clusters/concerns/application_data.rb
View file @
a2ceace1
...
@@ -6,6 +6,14 @@ module Clusters
...
@@ -6,6 +6,14 @@ module Clusters
extend
ActiveSupport
::
Concern
extend
ActiveSupport
::
Concern
included
do
included
do
def
uninstall_command
Gitlab
::
Kubernetes
::
Helm
::
DeleteCommand
.
new
(
name:
name
,
rbac:
cluster
.
platform_kubernetes_rbac?
,
files:
files
)
end
def
repository
def
repository
nil
nil
end
end
...
...
lib/gitlab/kubernetes/helm/delete_command.rb
0 → 100644
View file @
a2ceace1
# frozen_string_literal: true
module
Gitlab
module
Kubernetes
module
Helm
class
DeleteCommand
include
BaseCommand
include
ClientCommand
attr_accessor
:name
,
:files
def
initialize
(
name
:,
rbac
:,
files
:)
@name
=
name
@files
=
files
@rbac
=
rbac
end
def
generate_script
super
+
[
init_command
,
wait_for_tiller_command
,
delete_command
].
compact
.
join
(
"
\n
"
)
end
def
pod_name
"uninstall-
#{
name
}
"
end
def
rbac?
@rbac
end
private
def
delete_command
command
=
[
'helm'
,
'delete'
,
'--purge'
,
name
]
+
optional_tls_flags
command
.
shelljoin
end
def
optional_tls_flags
return
[]
unless
files
.
key?
(
:'ca.pem'
)
[
'--tls'
,
'--tls-ca-cert'
,
"
#{
files_dir
}
/ca.pem"
,
'--tls-cert'
,
"
#{
files_dir
}
/cert.pem"
,
'--tls-key'
,
"
#{
files_dir
}
/key.pem"
]
end
end
end
end
end
spec/lib/gitlab/kubernetes/helm/delete_command_spec.rb
0 → 100644
View file @
a2ceace1
# frozen_string_literal: true
require
'spec_helper'
describe
Gitlab
::
Kubernetes
::
Helm
::
DeleteCommand
do
let
(
:app_name
)
{
'app-name'
}
let
(
:rbac
)
{
true
}
let
(
:files
)
{
{}
}
let
(
:delete_command
)
{
described_class
.
new
(
name:
app_name
,
rbac:
rbac
,
files:
files
)
}
subject
{
delete_command
}
it_behaves_like
'helm commands'
do
let
(
:commands
)
do
<<~
EOS
helm init --upgrade
for i in $(seq 1 30); do helm version && break; sleep 1s; echo "Retrying ($i)..."; done
helm delete --purge app-name
EOS
end
end
context
'when there is a ca.pem file'
do
let
(
:files
)
{
{
'ca.pem'
:
'some file content'
}
}
it_behaves_like
'helm commands'
do
let
(
:commands
)
do
<<~
EOS
helm init --upgrade
for i in $(seq 1 30); do helm version && break; sleep 1s; echo "Retrying ($i)..."; done
#{
helm_delete_command
}
EOS
end
let
(
:helm_delete_command
)
do
<<~
EOS
.
squish
helm delete --purge app-name
--tls
--tls-ca-cert /data/helm/app-name/config/ca.pem
--tls-cert /data/helm/app-name/config/cert.pem
--tls-key /data/helm/app-name/config/key.pem
EOS
end
end
end
describe
'#pod_resource'
do
subject
{
delete_command
.
pod_resource
}
context
'rbac is enabled'
do
let
(
:rbac
)
{
true
}
it
'generates a pod that uses the tiller serviceAccountName'
do
expect
(
subject
.
spec
.
serviceAccountName
).
to
eq
(
'tiller'
)
end
end
context
'rbac is not enabled'
do
let
(
:rbac
)
{
false
}
it
'generates a pod that uses the default serviceAccountName'
do
expect
(
subject
.
spec
.
serviceAcccountName
).
to
be_nil
end
end
end
describe
'#pod_name'
do
subject
{
delete_command
.
pod_name
}
it
{
is_expected
.
to
eq
(
'uninstall-app-name'
)
}
end
end
spec/support/shared_examples/models/cluster_application_helm_cert_examples.rb
View file @
a2ceace1
shared_examples
'cluster application helm specs'
do
|
application_name
|
shared_examples
'cluster application helm specs'
do
|
application_name
|
let
(
:application
)
{
create
(
application_name
)
}
let
(
:application
)
{
create
(
application_name
)
}
describe
'#uninstall_command'
do
subject
{
application
.
uninstall_command
}
it
{
is_expected
.
to
be_an_instance_of
(
Gitlab
::
Kubernetes
::
Helm
::
DeleteCommand
)
}
it
'has the application name'
do
expect
(
subject
.
name
).
to
eq
(
application
.
name
)
end
it
'has files'
do
expect
(
subject
.
files
).
to
eq
(
application
.
files
)
end
it
'is rbac'
do
expect
(
subject
).
to
be_rbac
end
context
'on a non rbac enabled cluster'
do
before
do
application
.
cluster
.
platform_kubernetes
.
abac!
end
it
{
is_expected
.
not_to
be_rbac
}
end
end
describe
'#files'
do
describe
'#files'
do
subject
{
application
.
files
}
subject
{
application
.
files
}
...
...
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