Ver código fonte

fix state machine

Ajay Tripathy 4 anos atrás
pai
commit
2de0b18a8b
2 arquivos alterados com 13 adições e 5 exclusões
  1. 1 1
      pkg/kubecost/config_test.go
  2. 12 4
      pkg/util/cloudutil/aws.go

+ 1 - 1
pkg/kubecost/config_test.go

@@ -38,7 +38,7 @@ func TestLabelConfig_Map(t *testing.T) {
 
 func TestLabelConfig_GetExternalAllocationName(t *testing.T) {
 	// Make sure that AWS's Glue/Athena column formatting is supported
-	glueFormattedLabel := cloudutil.ConvertToGlueColumnFormat("Non__GlueFormattedLabel")
+	glueFormattedLabel := cloudutil.ConvertToGlueColumnFormat("___Non_&GlueFormattedLabel___&")
 
 	labels := map[string]string{
 		"kubens":                      "kubecost-staging",

+ 12 - 4
pkg/util/cloudutil/aws.go

@@ -1,6 +1,7 @@
 package cloudutil
 
 import (
+	"fmt"
 	"strings"
 	"unicode"
 
@@ -14,27 +15,34 @@ import (
 // https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/run-athena-sql.html
 // It returns a string containing the column name in proper column name format and length.
 func ConvertToGlueColumnFormat(columnName string) string {
-
+	fmt.Printf("Calling convert on %s: ", columnName)
 	var sb strings.Builder
 	var prev rune
 	for i, r := range columnName {
 		if unicode.IsUpper(r) && prev != '_' && i != 0 {
 			sb.WriteRune('_')
 		}
-		if !unicode.IsLetter(r) && !unicode.IsNumber(r) && prev != '_' && i != 0 && i != (len(columnName)-1) {
-			sb.WriteRune('_')
+		if !unicode.IsLetter(r) && !unicode.IsNumber(r) {
+			if prev != '_' && i != 0 && i != (len(columnName)-1) {
+				sb.WriteRune('_')
+			}
 			prev = '_'
 			continue
 		}
 		if r == '_' {
 			if prev == '_' || i == 0 || i == len(columnName)-1 {
+				prev = '_'
 				continue
 			}
 		}
 		sb.WriteRune(unicode.ToLower(r))
 		prev = r
 	}
+
 	final := sb.String()
+	if prev == '_' { // string any trailing '_'
+		final = final[:len(final)-1]
+	}
 	// Longer column name than expected - remove _ left to right
 	allowedColLen := 128
 	underscoreToRemove := len(final) - allowedColLen
@@ -47,7 +55,7 @@ func ConvertToGlueColumnFormat(columnName string) string {
 	if len(final) > allowedColLen {
 		final = final[:allowedColLen]
 	}
-
+	fmt.Println(final)
 	log.Debugf("Column name being returned: \"%s\". Length: \"%d\".", final, len(final))
 
 	return final