Test Prometheus proxy client generation
This commit is contained in:
parent
ae9c8277d9
commit
09473b192c
2 changed files with 58 additions and 2 deletions
|
@ -40,15 +40,20 @@ module Clusters
|
|||
end
|
||||
|
||||
def proxy_client
|
||||
return unless cluster.kubeclient
|
||||
return unless kube_client
|
||||
|
||||
kube_client = cluster.kubeclient
|
||||
proxy_url = kube_client.proxy_url('service', service_name, service_port, Gitlab::Kubernetes::Helm::NAMESPACE)
|
||||
|
||||
# ensures headers containing auth data are appended to original k8s client options
|
||||
options = kube_client.rest_client.options.merge(headers: kube_client.headers)
|
||||
RestClient::Resource.new(proxy_url, options)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def kube_client
|
||||
cluster&.kubeclient
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -31,4 +31,55 @@ describe Clusters::Applications::Prometheus do
|
|||
expect(subject).to eq("#{Rails.root}/vendor/prometheus/values.yaml")
|
||||
end
|
||||
end
|
||||
|
||||
describe '#proxy_client' do
|
||||
context 'cluster is nil' do
|
||||
it 'returns nil' do
|
||||
expect(subject.cluster).to be_nil
|
||||
expect(subject.proxy_client).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context "cluster doesn't have kubeclient" do
|
||||
let(:cluster) { create(:cluster) }
|
||||
subject { create(:clusters_applications_prometheus, cluster: cluster) }
|
||||
|
||||
it 'returns nil' do
|
||||
expect(subject.proxy_client).to be_nil
|
||||
end
|
||||
end
|
||||
|
||||
context 'cluster has kubeclient' do
|
||||
let(:kubernetes_url) { 'http://example.com' }
|
||||
let(:k8s_discover_response) { {
|
||||
resources: [
|
||||
{
|
||||
name: 'service',
|
||||
kind: 'Service'
|
||||
}]
|
||||
} }
|
||||
|
||||
let(:kube_client) { Kubeclient::Client.new(kubernetes_url) }
|
||||
|
||||
let(:cluster) { create(:cluster) }
|
||||
subject { create(:clusters_applications_prometheus, cluster: cluster) }
|
||||
|
||||
before do
|
||||
allow(kube_client.rest_client).to receive(:get).and_return(k8s_discover_response.to_json)
|
||||
allow(subject.cluster).to receive(:kubeclient).and_return(kube_client)
|
||||
end
|
||||
|
||||
it 'creates proxy prometheus rest client' do
|
||||
expect(subject.proxy_client).to be_instance_of(RestClient::Resource)
|
||||
end
|
||||
|
||||
it 'creates proper url' do
|
||||
expect(subject.proxy_client.url).to eq('http://example.com/api/v1/proxy/namespaces/gitlab-managed-apps/service/prometheus-prometheus-server:80')
|
||||
end
|
||||
|
||||
it 'copies options and headers from kube client to proxy client' do
|
||||
expect(subject.proxy_client.options).to eq(kube_client.rest_client.options.merge(headers: kube_client.headers))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue