From ec3d7026d49637cde45327b37f8458e5bce318d1 Mon Sep 17 00:00:00 2001
From: Richard Wei <54336863+WaysonWei@users.noreply.github.com>
Date: Thu, 31 Mar 2022 10:34:29 +1300
Subject: [PATCH] fix(service): fix service name starting from zero EE-2807
 (#6694)

* fix service name index
---
 .../kube-services/kube-services.controller.js | 25 +++++++++++--------
 1 file changed, 15 insertions(+), 10 deletions(-)

diff --git a/app/kubernetes/components/kube-services/kube-services.controller.js b/app/kubernetes/components/kube-services/kube-services.controller.js
index c35be0585..32d6b8515 100644
--- a/app/kubernetes/components/kube-services/kube-services.controller.js
+++ b/app/kubernetes/components/kube-services/kube-services.controller.js
@@ -21,26 +21,32 @@ export default class KubeServicesViewController {
     p.Selector = this.formValues.Selector;
 
     p.Name = this.getUniqName();
-    this.state.nameIndex += 1;
     this.formValues.Services.push(p);
   }
 
   getUniqName() {
-    let name = this.formValues.Name + '-' + this.state.nameIndex;
+    //services name will follow thia patten: service, service-2, service-3...
+    let nameIndex = 2;
+    let UniqName = this.formValues.Name;
     const services = this.formValues.Services;
-    services.forEach((service) => {
-      if (service.Name === name) {
-        this.state.nameIndex += 1;
-        name = this.formValues.Name + '-' + this.state.nameIndex;
-      }
+
+    const sortServices = services.sort((a, b) => {
+      return a.Name.localeCompare(b.Name);
     });
-    const UniqName = this.formValues.Name + '-' + this.state.nameIndex;
+
+    if (sortServices.length !== 0) {
+      sortServices.forEach((service) => {
+        if (service.Name === UniqName) {
+          UniqName = this.formValues.Name + '-' + nameIndex;
+          nameIndex += 1;
+        }
+      });
+    }
     return UniqName;
   }
 
   deleteService(index) {
     this.formValues.Services.splice(index, 1);
-    this.state.nameIndex -= 1;
   }
 
   addPort(index) {
@@ -98,7 +104,6 @@ export default class KubeServicesViewController {
         },
       ],
       selected: KubernetesApplicationPublishingTypes.CLUSTER_IP,
-      nameIndex: this.formValues.Services.length,
       endpointId: this.EndpointProvider.endpointID(),
     };
   }