add regex which replaces invalid chars in service offering
diff --git a/metadata.go b/metadata.go
index f2deccc..5854a4c 100644
--- a/metadata.go
+++ b/metadata.go
@@ -23,6 +23,7 @@
"io/ioutil"
"net"
"net/http"
+ "regexp"
"github.com/d2g/dhcp4"
"k8s.io/api/core/v1"
@@ -47,6 +48,8 @@
metadataTypeZone metadataType = "availability-zone"
)
+var labelInvalidCharsRegex *regexp.Regexp = regexp.MustCompile(`([^A-Za-z0-9][^-A-Za-z0-9_.]*)?[^A-Za-z0-9]`)
+
// NodeAddresses returns the addresses of the specified instance.
func (m *metadata) NodeAddresses(ctx context.Context, name types.NodeName) ([]v1.NodeAddress, error) {
externalIP, err := m.get(metadataTypeExternalIP)
@@ -97,7 +100,11 @@
// InstanceType returns the type of the specified instance.
func (m *metadata) InstanceType(ctx context.Context, name types.NodeName) (string, error) {
- instanceType, err := m.get(metadataTypeInstanceType)
+ instanceTypeCS, err := m.get(metadataTypeInstanceType)
+
+ // Replace everything that doesn't match the metadata.labels regex
+ instanceType := labelInvalidCharsRegex.ReplaceAllString(instanceTypeCS, ``)
+
if err != nil {
return "", fmt.Errorf("could not get instance type: %v", err)
}