/
cloud.go
52 lines (45 loc) · 1.42 KB
/
cloud.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// Copyright (C) 2022, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package models
import "golang.org/x/exp/maps"
type RegionConfig struct {
InstanceIDs []string
APIInstanceIDs []string
PublicIPs []string
KeyPair string
SecurityGroup string
CertFilePath string
ImageID string
Prefix string
CertName string
SecurityGroupName string
NumNodes int
InstanceType string
}
type CloudConfig map[string]RegionConfig
// GetRegions returns a slice of strings representing the regions of the RegionConfig.
func (ccm *CloudConfig) GetRegions() []string {
return maps.Keys(*ccm)
}
// GetAllInstanceIDs returns all instance IDs
func (ccm *CloudConfig) GetAllInstanceIDs() []string {
instanceIDs := []string{}
for _, cloudConfig := range *ccm {
instanceIDs = append(instanceIDs, cloudConfig.InstanceIDs...)
}
return instanceIDs
}
// GetInstanceIDsForRegion returns instance IDs for specific region
func (ccm *CloudConfig) GetInstanceIDsForRegion(region string) []string {
if regionConf, ok := (*ccm)[region]; ok {
return regionConf.InstanceIDs
}
return []string{}
}
// GetAPIInstanceIDsForRegion returns API instance IDs for specific region
func (ccm *CloudConfig) GetAPIInstanceIDsForRegion(region string) []string {
if regionConf, ok := (*ccm)[region]; ok {
return regionConf.APIInstanceIDs
}
return []string{}
}