File tree Expand file tree Collapse file tree 2 files changed +53
-0
lines changed
Expand file tree Collapse file tree 2 files changed +53
-0
lines changed Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ const (
2121 CloudProviderHetzner CloudProvider = "Hetzner"
2222 CloudProviderDigitalOcean CloudProvider = "DigitalOcean"
2323 CloudProviderAlibaba CloudProvider = "Alibaba"
24+ CloudProviderScaleway CloudProvider = "Scaleway"
2425 CloudProviderUnknown CloudProvider = ""
2526)
2627
@@ -61,6 +62,8 @@ func getCloudProvider() CloudProvider {
6162 return CloudProviderHetzner
6263 case "Alibaba Cloud" :
6364 return CloudProviderAlibaba
65+ case "Scaleway" :
66+ return CloudProviderScaleway
6467 }
6568 }
6669 return CloudProviderUnknown
@@ -82,6 +85,8 @@ func GetInstanceMetadata() *CloudMetadata {
8285 return getDigitalOceanMetadata ()
8386 case CloudProviderAlibaba :
8487 return getAlibabaMetadata ()
88+ case CloudProviderScaleway :
89+ return getScalewayMetadata ()
8590 }
8691 return nil
8792}
Original file line number Diff line number Diff line change 1+ package metadata
2+
3+ import (
4+ "io"
5+ "net/http"
6+ "regexp"
7+ "strings"
8+
9+ "k8s.io/klog/v2"
10+ )
11+
12+ const scalewayInstanceMetadataURL = "http://169.254.42.42/conf"
13+
14+ var scalewayAZSuffix = regexp .MustCompile (`-(\d+)$` )
15+
16+ func getScalewayMetadata () * CloudMetadata {
17+ r , _ := http .NewRequest (http .MethodGet , scalewayInstanceMetadataURL , nil )
18+ resp , err := httpCallWithTimeout (r )
19+ if err != nil {
20+ klog .Warningln (err )
21+ return nil
22+ }
23+ defer resp .Body .Close ()
24+ if resp .StatusCode != http .StatusOK {
25+ klog .Warningf ("got %s from Scaleway metadata API" , resp .Status )
26+ return nil
27+ }
28+ payload , err := io .ReadAll (resp .Body )
29+ if err != nil {
30+ klog .Warningln (err )
31+ return nil
32+ }
33+ md := map [string ]string {}
34+ for _ , l := range strings .Split (string (payload ), "\n " ) {
35+ kv := strings .SplitN (l , "=" , 2 )
36+ if len (kv ) != 2 {
37+ continue
38+ }
39+ md [kv [0 ]] = kv [1 ]
40+ }
41+ return & CloudMetadata {
42+ Provider : CloudProviderScaleway ,
43+ InstanceId : md ["ID" ],
44+ Region : scalewayAZSuffix .ReplaceAllString (md ["ZONE" ], "" ),
45+ AvailabilityZone : md ["ZONE" ],
46+ InstanceType : md ["COMMERCIAL_TYPE" ],
47+ }
48+ }
You can’t perform that action at this time.
0 commit comments