cluster auth
This commit is contained in:
@@ -14,6 +14,7 @@ class StaticTokenAuth(AuthBase):
|
||||
|
||||
def __call__(self, request):
|
||||
request.headers['Authorization'] = 'Bearer {}'.format(self.token)
|
||||
return request
|
||||
|
||||
|
||||
class OAuthTokenAuth(AuthBase):
|
||||
@@ -24,6 +25,7 @@ class OAuthTokenAuth(AuthBase):
|
||||
def __call__(self, request):
|
||||
token = tokens.get(self.token_name)
|
||||
request.headers['Authorization'] = 'Bearer {}'.format(token)
|
||||
return request
|
||||
|
||||
|
||||
class Cluster:
|
||||
|
||||
@@ -53,11 +53,18 @@ def map_container(cont: dict, pod: dict):
|
||||
return obj
|
||||
|
||||
|
||||
def request(cluster, path, **kwargs):
|
||||
if 'timeout' not in kwargs:
|
||||
# sane default timeout
|
||||
kwargs['time'] = 5
|
||||
return session.get(urljoin(cluster.api_server_url, path), auth=cluster.auth, verify=cluster.ssl_ca_cert, **kwargs)
|
||||
|
||||
|
||||
def get_kubernetes_clusters(cluster_discoverer):
|
||||
for cluster in cluster_discoverer.get_clusters():
|
||||
api_server_url = cluster.api_server_url
|
||||
cluster_id = generate_cluster_id(api_server_url)
|
||||
response = session.get(urljoin(api_server_url, '/api/v1/nodes'), timeout=5, auth=cluster.auth, verify=cluster.ssl_ca_cert)
|
||||
response = request(cluster, '/api/v1/nodes')
|
||||
response.raise_for_status()
|
||||
nodes = {}
|
||||
pods_by_namespace_name = {}
|
||||
@@ -65,7 +72,7 @@ def get_kubernetes_clusters(cluster_discoverer):
|
||||
for node in response.json()['items']:
|
||||
obj = map_node(node)
|
||||
nodes[obj['name']] = obj
|
||||
response = session.get(urljoin(api_server_url, '/api/v1/pods'), timeout=5)
|
||||
response = request(cluster, '/api/v1/pods')
|
||||
response.raise_for_status()
|
||||
for pod in response.json()['items']:
|
||||
obj = map_pod(pod)
|
||||
@@ -83,7 +90,7 @@ def get_kubernetes_clusters(cluster_discoverer):
|
||||
unassigned_pods[pod_key] = obj
|
||||
|
||||
try:
|
||||
response = session.get(urljoin(api_server_url, '/api/v1/namespaces/kube-system/services/heapster/proxy/apis/metrics/v1alpha1/nodes'), timeout=5)
|
||||
response = request(cluster, '/api/v1/namespaces/kube-system/services/heapster/proxy/apis/metrics/v1alpha1/nodes')
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
if not data.get('items'):
|
||||
@@ -94,9 +101,7 @@ def get_kubernetes_clusters(cluster_discoverer):
|
||||
except:
|
||||
logging.exception('Failed to get node metrics')
|
||||
try:
|
||||
response = session.get(urljoin(api_server_url,
|
||||
'/api/v1/namespaces/kube-system/services/heapster/proxy/apis/metrics/v1alpha1/pods'),
|
||||
timeout=5)
|
||||
response = request(cluster, '/api/v1/namespaces/kube-system/services/heapster/proxy/apis/metrics/v1alpha1/pods')
|
||||
response.raise_for_status()
|
||||
data = response.json()
|
||||
if not data.get('items'):
|
||||
|
||||
Reference in New Issue
Block a user