mirror of
https://github.com/edgelesssys/constellation.git
synced 2024-12-27 08:29:33 -05:00
63 lines
1.4 KiB
Go
63 lines
1.4 KiB
Go
|
package gcp
|
||
|
|
||
|
// copy of ec2/instances.go
|
||
|
|
||
|
// TODO(katexochen): refactor into mulitcloud package.
|
||
|
|
||
|
import "errors"
|
||
|
|
||
|
// Instance is a gcp instance.
|
||
|
type Instance struct {
|
||
|
PublicIP string
|
||
|
PrivateIP string
|
||
|
}
|
||
|
|
||
|
// Instances is a map of gcp Instances. The ID of an instance is used as key.
|
||
|
type Instances map[string]Instance
|
||
|
|
||
|
// IDs returns the IDs of all instances of the Constellation.
|
||
|
func (i Instances) IDs() []string {
|
||
|
var ids []string
|
||
|
for id := range i {
|
||
|
ids = append(ids, id)
|
||
|
}
|
||
|
return ids
|
||
|
}
|
||
|
|
||
|
// PublicIPs returns the public IPs of all the instances of the Constellation.
|
||
|
func (i Instances) PublicIPs() []string {
|
||
|
var ips []string
|
||
|
for _, instance := range i {
|
||
|
ips = append(ips, instance.PublicIP)
|
||
|
}
|
||
|
return ips
|
||
|
}
|
||
|
|
||
|
// PrivateIPs returns the private IPs of all the instances of the Constellation.
|
||
|
func (i Instances) PrivateIPs() []string {
|
||
|
var ips []string
|
||
|
for _, instance := range i {
|
||
|
ips = append(ips, instance.PrivateIP)
|
||
|
}
|
||
|
return ips
|
||
|
}
|
||
|
|
||
|
// GetOne return anyone instance out of the instances and its ID.
|
||
|
func (i Instances) GetOne() (string, Instance, error) {
|
||
|
for id, instance := range i {
|
||
|
return id, instance, nil
|
||
|
}
|
||
|
return "", Instance{}, errors.New("map is empty")
|
||
|
}
|
||
|
|
||
|
// GetOthers returns all instances but the one with the handed ID.
|
||
|
func (i Instances) GetOthers(id string) Instances {
|
||
|
others := make(Instances)
|
||
|
for key, instance := range i {
|
||
|
if key != id {
|
||
|
others[key] = instance
|
||
|
}
|
||
|
}
|
||
|
return others
|
||
|
}
|