diff --git a/cmd/cloudinitsave/cloudinitsave.go b/cmd/cloudinitsave/cloudinitsave.go index 8c743f8e..f1b0503a 100644 --- a/cmd/cloudinitsave/cloudinitsave.go +++ b/cmd/cloudinitsave/cloudinitsave.go @@ -108,11 +108,6 @@ func currentDatasource() (datasource.Datasource, error) { } ds := selectDatasource(dss) - - if ds.Type() == "packet-metadata-service" { - enablePacketNetwork(&cfg.Rancher) - } - return ds, nil } @@ -225,9 +220,10 @@ func getDatasources(cfg *rancherConfig.CloudConfig) []datasource.Datasource { dss = append(dss, gce.NewDatasource("http://metadata.google.internal/")) } case "packet": - if network { - dss = append(dss, packet.NewDatasource("https://metadata.packet.net/")) + if !network { + enablePacketNetwork(&cfg.Rancher) } + dss = append(dss, packet.NewDatasource("https://metadata.packet.net/")) } } diff --git a/cmd/cloudinitsave/packet.go b/cmd/cloudinitsave/packet.go index 63f1689b..23cd2957 100644 --- a/cmd/cloudinitsave/packet.go +++ b/cmd/cloudinitsave/packet.go @@ -16,6 +16,22 @@ import ( ) func enablePacketNetwork(cfg *rancherConfig.RancherConfig) { + bootStrapped := false + for _, v := range cfg.Network.Interfaces { + if v.Address != "" { + if err := netconf.ApplyNetworkConfigs(&cfg.Network); err != nil { + logrus.Errorf("Failed to bootstrap network: %v", err) + return + } + bootStrapped = true + break + } + } + + if !bootStrapped { + return + } + c := metadata.NewClient(http.DefaultClient) m, err := c.Metadata.Get() if err != nil {