mirror of https://github.com/portainer/portainer
				
				
				
			
		
			
				
	
	
		
			134 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
import * as JsonPatch from 'fast-json-patch';
 | 
						|
import { KubernetesHorizontalPodAutoScaler } from './models';
 | 
						|
import { KubernetesHorizontalPodAutoScalerCreatePayload } from './payload';
 | 
						|
 | 
						|
export class KubernetesHorizontalPodAutoScalerConverter {
 | 
						|
  /**
 | 
						|
   * Convert API data to KubernetesHorizontalPodAutoScaler model
 | 
						|
   */
 | 
						|
  static apiToModel(data, yaml) {
 | 
						|
    const res = new KubernetesHorizontalPodAutoScaler();
 | 
						|
    res.Id = data.metadata.uid;
 | 
						|
    res.Namespace = data.metadata.namespace;
 | 
						|
    res.Name = data.metadata.name;
 | 
						|
    res.MinReplicas = data.spec.minReplicas;
 | 
						|
    res.MaxReplicas = data.spec.maxReplicas;
 | 
						|
    res.TargetCPUUtilization = data.spec.targetCPUUtilizationPercentage;
 | 
						|
 | 
						|
    if (data.spec.scaleTargetRef) {
 | 
						|
      res.TargetEntity.ApiVersion = data.spec.scaleTargetRef.apiVersion;
 | 
						|
      res.TargetEntity.Kind = data.spec.scaleTargetRef.kind;
 | 
						|
      res.TargetEntity.Name = data.spec.scaleTargetRef.name;
 | 
						|
    }
 | 
						|
    res.Yaml = yaml ? yaml.data : '';
 | 
						|
    return res;
 | 
						|
  }
 | 
						|
 | 
						|
  static createPayload(data) {
 | 
						|
    const payload = new KubernetesHorizontalPodAutoScalerCreatePayload();
 | 
						|
    payload.metadata.namespace = data.Namespace;
 | 
						|
    payload.metadata.name = data.TargetEntity.Name;
 | 
						|
    payload.spec.minReplicas = data.MinReplicas;
 | 
						|
    payload.spec.maxReplicas = data.MaxReplicas;
 | 
						|
    payload.spec.targetCPUUtilizationPercentage = data.TargetCPUUtilization;
 | 
						|
    payload.spec.scaleTargetRef.apiVersion = data.TargetEntity.ApiVersion;
 | 
						|
    payload.spec.scaleTargetRef.kind = data.TargetEntity.Kind;
 | 
						|
    payload.spec.scaleTargetRef.name = data.TargetEntity.Name;
 | 
						|
    return payload;
 | 
						|
  }
 | 
						|
 | 
						|
  static patchPayload(oldScaler, newScaler) {
 | 
						|
    const oldPayload = KubernetesHorizontalPodAutoScalerConverter.createPayload(oldScaler);
 | 
						|
    const newPayload = KubernetesHorizontalPodAutoScalerConverter.createPayload(newScaler);
 | 
						|
    const payload = JsonPatch.compare(oldPayload, newPayload);
 | 
						|
    return payload;
 | 
						|
  }
 | 
						|
 | 
						|
  static applicationFormValuesToModel(formValues, kind) {
 | 
						|
    const res = new KubernetesHorizontalPodAutoScaler();
 | 
						|
    res.Name = formValues.Name;
 | 
						|
    res.Namespace = formValues.ResourcePool.Namespace.Name;
 | 
						|
    res.MinReplicas = formValues.AutoScaler.MinReplicas;
 | 
						|
    res.MaxReplicas = formValues.AutoScaler.MaxReplicas;
 | 
						|
    res.TargetCPUUtilization = formValues.AutoScaler.TargetCPUUtilization;
 | 
						|
    res.TargetEntity.Name = formValues.Name;
 | 
						|
    res.TargetEntity.Kind = kind;
 | 
						|
    res.TargetEntity.ApiVersion = formValues.AutoScaler.ApiVersion;
 | 
						|
    return res;
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Convertion functions to use with v2beta2 model
 | 
						|
   */
 | 
						|
 | 
						|
  // static apiToModel(data, yaml) {
 | 
						|
  //   const res = new KubernetesHorizontalPodAutoScaler();
 | 
						|
  //   res.Id = data.metadata.uid;
 | 
						|
  //   res.Namespace = data.metadata.namespace;
 | 
						|
  //   res.Name = data.metadata.name;
 | 
						|
  //   res.MinReplicas = data.spec.minReplicas;
 | 
						|
  //   res.MaxReplicas = data.spec.maxReplicas;
 | 
						|
  //   res.TargetCPUUtilization = data.spec.targetCPUUtilization;
 | 
						|
 | 
						|
  //   _.forEach(data.spec.metrics, (metric) => {
 | 
						|
  //     if (metric.type === 'Resource') {
 | 
						|
  //       if (metric.resource.name === 'cpu') {
 | 
						|
  //         res.TargetCPUUtilization = metric.resource.target.averageUtilization;
 | 
						|
  //       }
 | 
						|
  //       if (metric.resource.name === 'memory') {
 | 
						|
  //         res.TargetMemoryValue = parseFloat(metric.resource.target.averageValue) / 1000;
 | 
						|
  //       }
 | 
						|
  //     }
 | 
						|
  //   });
 | 
						|
 | 
						|
  //   if (data.spec.scaleTargetRef) {
 | 
						|
  //     res.TargetEntity.ApiVersion = data.spec.scaleTargetRef.apiVersion;
 | 
						|
  //     res.TargetEntity.Kind = data.spec.scaleTargetRef.kind;
 | 
						|
  //     res.TargetEntity.Name = data.spec.scaleTargetRef.name;
 | 
						|
  //   }
 | 
						|
  //   res.Yaml = yaml ? yaml.data : '';
 | 
						|
  //   return res;
 | 
						|
  // }
 | 
						|
 | 
						|
  // static createPayload(data) {
 | 
						|
  //   const payload = new KubernetesHorizontalPodAutoScalerCreatePayload();
 | 
						|
  //   payload.metadata.namespace = data.Namespace;
 | 
						|
  //   payload.metadata.name = data.TargetEntity.Name;
 | 
						|
  //   payload.spec.minReplicas = data.MinReplicas;
 | 
						|
  //   payload.spec.maxReplicas = data.MaxReplicas;
 | 
						|
 | 
						|
  //   if (data.TargetMemoryValue) {
 | 
						|
  //     const memoryMetric = new KubernetesHorizontalPodAutoScalerMemoryMetric();
 | 
						|
  //     memoryMetric.resource.target.averageValue = data.TargetMemoryValue;
 | 
						|
  //     payload.spec.metrics.push(memoryMetric);
 | 
						|
  //   }
 | 
						|
 | 
						|
  //   if (data.TargetCPUUtilization) {
 | 
						|
  //     const cpuMetric = new KubernetesHorizontalPodAutoScalerCPUMetric();
 | 
						|
  //     cpuMetric.resource.target.averageUtilization = data.TargetCPUUtilization;
 | 
						|
  //     payload.spec.metrics.push(cpuMetric);
 | 
						|
  //   }
 | 
						|
 | 
						|
  //   payload.spec.scaleTargetRef.apiVersion = data.TargetEntity.ApiVersion;
 | 
						|
  //   payload.spec.scaleTargetRef.kind = data.TargetEntity.Kind;
 | 
						|
  //   payload.spec.scaleTargetRef.name = data.TargetEntity.Name;
 | 
						|
 | 
						|
  //   return payload;
 | 
						|
  // }
 | 
						|
 | 
						|
  // static applicationFormValuesToModel(formValues, kind) {
 | 
						|
  //   const res = new KubernetesHorizontalPodAutoScaler();
 | 
						|
  //   res.Name = formValues.Name;
 | 
						|
  //   res.Namespace = formValues.ResourcePool.Namespace.Name;
 | 
						|
  //   res.MinReplicas = formValues.AutoScaler.MinReplicas;
 | 
						|
  //   res.MaxReplicas = formValues.AutoScaler.MaxReplicas;
 | 
						|
  //   res.TargetCPUUtilization = formValues.AutoScaler.TargetCPUUtilization;
 | 
						|
  //   if (formValues.AutoScaler.TargetMemoryValue) {
 | 
						|
  //     res.TargetMemoryValue = formValues.AutoScaler.TargetMemoryValue + 'M';
 | 
						|
  //   }
 | 
						|
  //   res.TargetEntity.Name = formValues.Name;
 | 
						|
  //   res.TargetEntity.Kind = kind;
 | 
						|
  //   return res;
 | 
						|
  // }
 | 
						|
}
 |