mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			115 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			JavaScript
		
	
	
import angular from 'angular';
 | 
						|
import PortainerError from 'Portainer/error';
 | 
						|
import { KubernetesCommonParams } from 'Kubernetes/models/common/params';
 | 
						|
 | 
						|
class KubernetesMetricsService {
 | 
						|
  /* @ngInject */
 | 
						|
  constructor($async, KubernetesMetrics) {
 | 
						|
    this.$async = $async;
 | 
						|
    this.KubernetesMetrics = KubernetesMetrics;
 | 
						|
 | 
						|
    this.capabilitiesAsync = this.capabilitiesAsync.bind(this);
 | 
						|
 | 
						|
    this.getPodAsync = this.getPodAsync.bind(this);
 | 
						|
    this.getNodeAsync = this.getNodeAsync.bind(this);
 | 
						|
 | 
						|
    this.getPodsAsync = this.getPodsAsync.bind(this);
 | 
						|
    this.getNodesAsync = this.getNodesAsync.bind(this);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * GET
 | 
						|
   */
 | 
						|
  async capabilitiesAsync(endpointID) {
 | 
						|
    try {
 | 
						|
      await this.KubernetesMetrics().capabilities({ endpointId: endpointID }).$promise;
 | 
						|
    } catch (err) {
 | 
						|
      throw new PortainerError('Unable to retrieve metrics', err);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  capabilities(endpointID) {
 | 
						|
    return this.$async(this.capabilitiesAsync, endpointID);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Stats of Node
 | 
						|
   *
 | 
						|
   * @param {string} nodeName
 | 
						|
   */
 | 
						|
  async getNodeAsync(nodeName) {
 | 
						|
    try {
 | 
						|
      const params = new KubernetesCommonParams();
 | 
						|
      params.id = nodeName;
 | 
						|
      const data = await this.KubernetesMetrics().getNode(params).$promise;
 | 
						|
      return data;
 | 
						|
    } catch (err) {
 | 
						|
      throw new PortainerError('Unable to retrieve node stats', err);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  getNode(nodeName) {
 | 
						|
    return this.$async(this.getNodeAsync, nodeName);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Stats
 | 
						|
   *
 | 
						|
   * @param {string} namespace
 | 
						|
   * @param {string} podName
 | 
						|
   */
 | 
						|
  async getPodAsync(namespace, podName) {
 | 
						|
    try {
 | 
						|
      const params = new KubernetesCommonParams();
 | 
						|
      params.id = podName;
 | 
						|
      const data = await this.KubernetesMetrics(namespace).getPod(params).$promise;
 | 
						|
      return data;
 | 
						|
    } catch (err) {
 | 
						|
      throw new PortainerError('Unable to retrieve pod stats', err);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  getPod(namespace, podName) {
 | 
						|
    return this.$async(this.getPodAsync, namespace, podName);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Stats of Nodes in cluster
 | 
						|
   *
 | 
						|
   * @param {string} endpointID
 | 
						|
   */
 | 
						|
  async getNodesAsync(endpointID) {
 | 
						|
    try {
 | 
						|
      const data = await this.KubernetesMetrics().getNodes({ endpointId: endpointID }).$promise;
 | 
						|
      return data;
 | 
						|
    } catch (err) {
 | 
						|
      throw new PortainerError('Unable to retrieve nodes stats', err);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  getNodes(endpointID) {
 | 
						|
    return this.$async(this.getNodesAsync, endpointID);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Stats of Pods in a namespace
 | 
						|
   *
 | 
						|
   * @param {string} namespace
 | 
						|
   */
 | 
						|
  async getPodsAsync(namespace) {
 | 
						|
    try {
 | 
						|
      const data = await this.KubernetesMetrics(namespace).getPods().$promise;
 | 
						|
      return data;
 | 
						|
    } catch (err) {
 | 
						|
      throw new PortainerError('Unable to retrieve pod stats', err);
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  getPods(namespace) {
 | 
						|
    return this.$async(this.getPodsAsync, namespace);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export default KubernetesMetricsService;
 | 
						|
angular.module('portainer.kubernetes').service('KubernetesMetricsService', KubernetesMetricsService);
 |