diff --git a/cmd/cloudinitsave/cloudinitsave.go b/cmd/cloudinitsave/cloudinitsave.go index 06c277c4..bcef1480 100755 --- a/cmd/cloudinitsave/cloudinitsave.go +++ b/cmd/cloudinitsave/cloudinitsave.go @@ -181,23 +181,24 @@ func getDatasources(cfg *rancherConfig.CloudConfig, network bool) []datasource.D for _, ds := range cfg.Rancher.CloudInit.Datasources { parts := strings.SplitN(ds, ":", 2) + root := "" + if len(parts) > 1 { + root = parts[1] + } + switch parts[0] { case "ec2": if network { - if len(parts) == 1 { - dss = append(dss, ec2.NewDatasource(ec2.DefaultAddress)) - } else { - dss = append(dss, ec2.NewDatasource(parts[1])) - } + dss = append(dss, ec2.NewDatasource(root)) } case "file": - if len(parts) == 2 { - dss = append(dss, file.NewDatasource(parts[1])) + if root != "" { + dss = append(dss, file.NewDatasource(root)) } case "url": if network { - if len(parts) == 2 { - dss = append(dss, url.NewDatasource(parts[1])) + if root != "" { + dss = append(dss, url.NewDatasource(root)) } } case "cmdline": @@ -207,28 +208,24 @@ func getDatasources(cfg *rancherConfig.CloudConfig, network bool) []datasource.D } } case "configdrive": - if len(parts) == 2 { - dss = append(dss, configdrive.NewDatasource(parts[1])) + if root != "" { + dss = append(dss, configdrive.NewDatasource(root)) } case "digitalocean": if network { - if len(parts) == 1 { - dss = append(dss, digitalocean.NewDatasource(digitalocean.DefaultAddress)) - } else { - dss = append(dss, digitalocean.NewDatasource(parts[1])) - } + dss = append(dss, digitalocean.NewDatasource(root)) } else { enableDoLinkLocal() } case "gce": if network { - dss = append(dss, gce.NewDatasource("http://metadata.google.internal/")) + dss = append(dss, gce.NewDatasource(root)) } case "packet": if !network { enablePacketNetwork(&cfg.Rancher) } - dss = append(dss, packet.NewDatasource("https://metadata.packet.net/")) + dss = append(dss, packet.NewDatasource(root)) } } diff --git a/config/cloudinit/datasource/metadata/digitalocean/metadata.go b/config/cloudinit/datasource/metadata/digitalocean/metadata.go old mode 100644 new mode 100755 index 5fc0df48..f8ca981c --- a/config/cloudinit/datasource/metadata/digitalocean/metadata.go +++ b/config/cloudinit/datasource/metadata/digitalocean/metadata.go @@ -66,6 +66,9 @@ type MetadataService struct { } func NewDatasource(root string) *MetadataService { + if root == "" { + root = DefaultAddress + } return &MetadataService{Service: metadata.NewDatasource(root, apiVersion, userdataURL, metadataPath, nil)} } diff --git a/config/cloudinit/datasource/metadata/ec2/metadata.go b/config/cloudinit/datasource/metadata/ec2/metadata.go old mode 100644 new mode 100755 index ee3fa1d7..36be3f70 --- a/config/cloudinit/datasource/metadata/ec2/metadata.go +++ b/config/cloudinit/datasource/metadata/ec2/metadata.go @@ -39,6 +39,9 @@ type MetadataService struct { } func NewDatasource(root string) *MetadataService { + if root == "" { + root = DefaultAddress + } return &MetadataService{metadata.NewDatasource(root, apiVersion, userdataPath, metadataPath, nil)} } diff --git a/config/cloudinit/datasource/metadata/gce/metadata.go b/config/cloudinit/datasource/metadata/gce/metadata.go index 35e3ce9f..2e54f7b5 100755 --- a/config/cloudinit/datasource/metadata/gce/metadata.go +++ b/config/cloudinit/datasource/metadata/gce/metadata.go @@ -26,9 +26,10 @@ import ( ) const ( - apiVersion = "computeMetadata/v1/" - metadataPath = apiVersion - userdataPath = apiVersion + "instance/attributes/user-data" + DefaultAddress = "http://metadata.google.internal/" + apiVersion = "computeMetadata/v1/" + metadataPath = apiVersion + userdataPath = apiVersion + "instance/attributes/user-data" ) type MetadataService struct { @@ -36,6 +37,9 @@ type MetadataService struct { } func NewDatasource(root string) *MetadataService { + if root == "" { + root = DefaultAddress + } return &MetadataService{metadata.NewDatasource(root, apiVersion, userdataPath, metadataPath, http.Header{"Metadata-Flavor": {"Google"}})} } diff --git a/config/cloudinit/datasource/metadata/packet/metadata.go b/config/cloudinit/datasource/metadata/packet/metadata.go old mode 100644 new mode 100755 index 6b7b11c1..b00dad57 --- a/config/cloudinit/datasource/metadata/packet/metadata.go +++ b/config/cloudinit/datasource/metadata/packet/metadata.go @@ -62,6 +62,10 @@ type MetadataService struct { } func NewDatasource(root string) *MetadataService { + if root == "" { + root = DefaultAddress + } + return &MetadataService{Service: metadata.NewDatasource(root, apiVersion, userdataURL, metadataPath, nil)} }