blob: efd3598f9de14bde9f8fb1f7626e65e8c34d2ab7 [file] [log] [blame]
// +build linux
package roaming
import (
"net"
"veyron.io/veyron/veyron2"
"veyron.io/veyron/veyron2/config"
"veyron.io/veyron/veyron/profiles/internal/gce"
)
func handleGCE(rt veyron2.Runtime, publisher *config.Publisher) *net.IPAddr {
log := rt.Logger()
if gce.RunningOnGCE() {
var pub *net.IPAddr
// Determine the IP address from GCE's metadata
if ip, err := gce.ExternalIPAddress(); err != nil {
log.Infof("failed to query GCE metadata: %s", err)
} else {
// 1:1 NAT case, our network config will not change.
pub = &net.IPAddr{IP: ip}
}
if pub == nil {
log.Infof("failed to determine public IP address to publish with")
return nil
}
ch := make(chan config.Setting)
defer close(ch)
stop, err := publisher.CreateStream(SettingsStreamName, "dhcp", ch)
if err != nil {
return nil
}
_ = stop
// TODO(cnicolaou): stop should be used by the soon to be added
// Cleanup method.
return pub
}
return nil
}