func()

in controllers/master_reconcile.go [146:191]


func (r *DSMasterReconciler) createHPA(cluster *dsv1alpha1.DSMaster) *v2beta2.HorizontalPodAutoscaler {
	hpa := v2beta2.HorizontalPodAutoscaler{
		ObjectMeta: metav1.ObjectMeta{
			Name:            dsv1alpha1.DsWorkerHpa,
			Namespace:       cluster.Namespace,
			ResourceVersion: dsv1alpha1.DSVersion,
		},
		Spec: v2beta2.HorizontalPodAutoscalerSpec{
			ScaleTargetRef: v2beta2.CrossVersionObjectReference{
				Kind:       dsv1alpha1.DsWorkerKind,
				Name:       dsv1alpha1.DsWorkerLabel,
				APIVersion: dsv1alpha1.APIVersion,
			},
			MinReplicas: &cluster.Spec.HpaPolicy.MinReplicas,
			MaxReplicas: cluster.Spec.HpaPolicy.MaxReplicas,
		},
	}

	if cluster.Spec.HpaPolicy.CPUAverageUtilization > 0 {
		hpa.Spec.Metrics = append(hpa.Spec.Metrics, v2beta2.MetricSpec{
			Type: v2beta2.ResourceMetricSourceType,
			Resource: &v2beta2.ResourceMetricSource{
				Name: corev1.ResourceCPU,
				Target: v2beta2.MetricTarget{
					Type:               v2beta2.UtilizationMetricType,
					AverageUtilization: &cluster.Spec.HpaPolicy.CPUAverageUtilization,
				},
			},
		})
	}

	if cluster.Spec.HpaPolicy.MEMAverageUtilization > 0 {
		hpa.Spec.Metrics = append(hpa.Spec.Metrics, v2beta2.MetricSpec{
			Type: v2beta2.ResourceMetricSourceType,
			Resource: &v2beta2.ResourceMetricSource{
				Name: corev1.ResourceMemory,
				Target: v2beta2.MetricTarget{
					Type:               v2beta2.UtilizationMetricType,
					AverageUtilization: &cluster.Spec.HpaPolicy.MEMAverageUtilization,
				},
			},
		})
	}

	return &hpa
}