diff options
author | Tiger <twatson@gitlab.com> | 2019-07-25 16:23:50 +1000 |
---|---|---|
committer | Tiger <twatson@gitlab.com> | 2019-08-05 09:20:34 +1000 |
commit | cfe8024e70ed45517311f1700f9e69a2f15d395e (patch) | |
tree | 8bd91be112bd8496b0553d817fd7e5acaa1a9eba /spec/models/clusters | |
parent | 5ebbe95ad3211e4a751c38919ed7d31a6a0d5d50 (diff) | |
download | gitlab-ce-cfe8024e70ed45517311f1700f9e69a2f15d395e.tar.gz |
Allow Cert-Manager to be uninstalled60664-kubernetes-applications-uninstall-cert-manager
Our current version of Cert-Manager does not uninstall
cleanly, and we must manually remove custom resource
definitions.
Diffstat (limited to 'spec/models/clusters')
-rw-r--r-- | spec/models/clusters/applications/cert_manager_spec.rb | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/spec/models/clusters/applications/cert_manager_spec.rb b/spec/models/clusters/applications/cert_manager_spec.rb index e956a2355db..93050e80b07 100644 --- a/spec/models/clusters/applications/cert_manager_spec.rb +++ b/spec/models/clusters/applications/cert_manager_spec.rb @@ -13,7 +13,7 @@ describe Clusters::Applications::CertManager do describe '#can_uninstall?' do subject { cert_manager.can_uninstall? } - it { is_expected.to be_falsey } + it { is_expected.to be_truthy } end describe '#install_command' do @@ -80,6 +80,44 @@ describe Clusters::Applications::CertManager do end end + describe '#uninstall_command' do + subject { cert_manager.uninstall_command } + + it { is_expected.to be_an_instance_of(Gitlab::Kubernetes::Helm::DeleteCommand) } + + it 'is initialized with cert_manager arguments' do + expect(subject.name).to eq('certmanager') + expect(subject).to be_rbac + expect(subject.files).to eq(cert_manager.files) + end + + it 'specifies a post delete command to remove custom resource definitions' do + expect(subject.postdelete).to eq([ + "kubectl delete secret -n gitlab-managed-apps letsencrypt-prod --ignore-not-found", + 'kubectl delete crd certificates.certmanager.k8s.io --ignore-not-found', + 'kubectl delete crd clusterissuers.certmanager.k8s.io --ignore-not-found', + 'kubectl delete crd issuers.certmanager.k8s.io --ignore-not-found' + ]) + end + + context 'secret key name is not found' do + before do + allow(File).to receive(:read).and_call_original + expect(File).to receive(:read) + .with(Rails.root.join('vendor', 'cert_manager', 'cluster_issuer.yaml')) + .and_return('key: value') + end + + it 'does not try and delete the secret' do + expect(subject.postdelete).to eq([ + 'kubectl delete crd certificates.certmanager.k8s.io --ignore-not-found', + 'kubectl delete crd clusterissuers.certmanager.k8s.io --ignore-not-found', + 'kubectl delete crd issuers.certmanager.k8s.io --ignore-not-found' + ]) + end + end + end + describe '#files' do let(:application) { cert_manager } let(:values) { subject[:'values.yaml'] } |