// getDatasources creates a slice of possible Datasources for cloudinit based // on the different source command-line flags. func getDatasources() []datasource.Datasource { dss := make([]datasource.Datasource, 0, 5) if flags.sources.file != "" { dss = append(dss, file.NewDatasource(flags.sources.file)) } if flags.sources.url != "" { dss = append(dss, url.NewDatasource(flags.sources.url)) } if flags.sources.configDrive != "" { dss = append(dss, configdrive.NewDatasource(flags.sources.configDrive)) } if flags.sources.metadataService { dss = append(dss, ec2.NewDatasource(ec2.DefaultAddress)) } if flags.sources.ec2MetadataService != "" { dss = append(dss, ec2.NewDatasource(flags.sources.ec2MetadataService)) } if flags.sources.cloudSigmaMetadataService { dss = append(dss, cloudsigma.NewServerContextService()) } if flags.sources.digitalOceanMetadataService != "" { dss = append(dss, digitalocean.NewDatasource(flags.sources.digitalOceanMetadataService)) } if flags.sources.waagent != "" { dss = append(dss, waagent.NewDatasource(flags.sources.waagent)) } if flags.sources.packetMetadataService != "" { dss = append(dss, packet.NewDatasource(flags.sources.packetMetadataService)) } if flags.sources.procCmdLine { dss = append(dss, proc_cmdline.NewDatasource()) } return dss }
// getDatasources creates a slice of possible Datasources for cloudinit based // on the different source command-line flags. func getDatasources(cfg *rancherConfig.CloudConfig) []datasource.Datasource { dss := make([]datasource.Datasource, 0, 5) for _, ds := range cfg.Rancher.CloudInit.Datasources { parts := strings.SplitN(ds, ":", 2) 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])) } } case "file": if len(parts) == 2 { dss = append(dss, file.NewDatasource(parts[1])) } case "url": if network { if len(parts) == 2 { dss = append(dss, url.NewDatasource(parts[1])) } } case "cmdline": if network { if len(parts) == 1 { dss = append(dss, proc_cmdline.NewDatasource()) } } case "configdrive": if len(parts) == 2 { dss = append(dss, configdrive.NewDatasource(parts[1])) } case "digitalocean": if network { if len(parts) == 1 { dss = append(dss, digitalocean.NewDatasource(digitalocean.DefaultAddress)) } else { dss = append(dss, digitalocean.NewDatasource(parts[1])) } } else { enableDoLinkLocal() } case "gce": if network { gceCloudConfigFile, err := GetAndCreateGceDataSourceFilename() if err != nil { log.Errorf("Could not retrieve GCE CloudConfig %s", err) continue } dss = append(dss, file.NewDatasource(gceCloudConfigFile)) } case "packet": if !network { enablePacketNetwork(&cfg.Rancher) } dss = append(dss, packet.NewDatasource("https://metadata.packet.net/")) } } return dss }