CreateHPAAsync(Kubernetes k8sClient, V1HorizontalPodAutoscaler yamlModel,
                       MTAHPAModel hpaModel)
        {
            try
            {
                var namespaceParams = PrepareNamespaceParams(_groupName);
                var hpaParams       = PrepareHPAParams(_hpaName, _deployName);

                yamlModel.Metadata.Name = hpaParams.Item1;
                yamlModel.Metadata.NamespaceProperty          = namespaceParams;
                yamlModel.Spec.ScaleTargetRef.Name            = hpaParams.Item2;
                yamlModel.Spec.MaxReplicas                    = hpaModel.MaxReplicas;
                yamlModel.Spec.MinReplicas                    = hpaModel.MinReplicas;
                yamlModel.Spec.TargetCPUUtilizationPercentage = hpaModel.AvgCPU;

                var v1HorizontalPodAutoscaler = await k8sClient
                                                .CreateNamespacedHorizontalPodAutoscalerAsync
                                                    (yamlModel, namespaceParams);

                hpaModel = new MTAHPAModel(v1HorizontalPodAutoscaler);
                return(new Tuple <MTAHPAModel, MTAErrorModel>(hpaModel, null));
            }
            catch (HttpOperationException ex)
            {
                var errorModel = new MTAErrorModel(ex);
                return(new Tuple <MTAHPAModel, MTAErrorModel>(null, errorModel));
            }
            catch (Exception)
            {
                throw;
            }
        }
Esempio n. 2
0
 public MTAHPAModel(V1HorizontalPodAutoscaler v1HorizontalPodAutoscaler)
 {
     HPAName        = v1HorizontalPodAutoscaler.Metadata.Name;
     HPANamespace   = v1HorizontalPodAutoscaler.Metadata.NamespaceProperty;
     DeploymentName = v1HorizontalPodAutoscaler.Spec.ScaleTargetRef.Name;
     MaxReplicas    = v1HorizontalPodAutoscaler.Spec.MaxReplicas;
     MinReplicas    = (int)v1HorizontalPodAutoscaler.Spec.MinReplicas;
     AvgCPU         = (int)v1HorizontalPodAutoscaler.Spec.TargetCPUUtilizationPercentage;
 }
Esempio n. 3
0
        private async Task <string> DescribeObject(Kubernetes client, V1Namespace ns, V1HorizontalPodAutoscaler o, StringBuilder buffer)
        {
            var fetched = await client.ReadNamespacedHorizontalPodAutoscalerAsync(o.Metadata.Name, ns.Metadata.Name).ConfigureAwait(false);

            buffer.AppendLine($"API Veresion: {fetched.ApiVersion}");
            buffer.AppendLine($"Kind: {fetched.Kind}");
            buffer.AppendLine(DescribeMetadata(fetched.Metadata));
            return($"Horizontal Pod Autoscaler - {fetched.Metadata.Name}");
        }