feat(metadata): Distinguish between userdata and metadata for datasources
This commit is contained in:
parent
29ed6b38bd
commit
840c208b60
@ -79,7 +79,7 @@ func main() {
|
||||
}
|
||||
|
||||
fmt.Printf("Fetching user-data from datasource of type %q\n", ds.Type())
|
||||
userdataBytes, err := ds.Fetch()
|
||||
userdataBytes, err := ds.FetchUserdata()
|
||||
if err != nil {
|
||||
fmt.Printf("Failed fetching user-data from datasource: %v\n", err)
|
||||
if ignoreFailure {
|
||||
|
@ -18,7 +18,11 @@ func (self *configDrive) ConfigRoot() string {
|
||||
return self.root
|
||||
}
|
||||
|
||||
func (self *configDrive) Fetch() ([]byte, error) {
|
||||
func (self *configDrive) FetchMetadata() ([]byte, error) {
|
||||
return self.readFile("meta_data.json")
|
||||
}
|
||||
|
||||
func (self *configDrive) FetchUserdata() ([]byte, error) {
|
||||
return self.readFile("user_data")
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@ package datasource
|
||||
|
||||
type Datasource interface {
|
||||
ConfigRoot() string
|
||||
Fetch() ([]byte, error)
|
||||
FetchMetadata() ([]byte, error)
|
||||
FetchUserdata() ([]byte, error)
|
||||
Type() string
|
||||
}
|
||||
|
@ -16,7 +16,11 @@ func (self *localFile) ConfigRoot() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (self *localFile) Fetch() ([]byte, error) {
|
||||
func (self *localFile) FetchMetadata() ([]byte, error) {
|
||||
return []byte{}, nil
|
||||
}
|
||||
|
||||
func (self *localFile) FetchUserdata() ([]byte, error) {
|
||||
return ioutil.ReadFile(self.path)
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,11 @@ func (self *metadataService) ConfigRoot() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (ms *metadataService) Fetch() ([]byte, error) {
|
||||
func (self *metadataService) FetchMetadata() ([]byte, error) {
|
||||
return []byte{}, nil
|
||||
}
|
||||
|
||||
func (ms *metadataService) FetchUserdata() ([]byte, error) {
|
||||
client := pkg.NewHttpClient()
|
||||
return client.Get(ms.url)
|
||||
}
|
||||
|
@ -26,7 +26,11 @@ func (self *procCmdline) ConfigRoot() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (self *procCmdline) Fetch() ([]byte, error) {
|
||||
func (self *procCmdline) FetchMetadata() ([]byte, error) {
|
||||
return []byte{}, nil
|
||||
}
|
||||
|
||||
func (self *procCmdline) FetchUserdata() ([]byte, error) {
|
||||
contents, err := ioutil.ReadFile(self.Location)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -77,7 +77,7 @@ func TestProcCmdlineAndFetchConfig(t *testing.T) {
|
||||
|
||||
p := NewProcCmdline()
|
||||
p.Location = file.Name()
|
||||
cfg, err := p.Fetch()
|
||||
cfg, err := p.FetchUserdata()
|
||||
if err != nil {
|
||||
t.Errorf("Test produced error: %v", err)
|
||||
}
|
||||
|
@ -38,6 +38,7 @@ type CloudConfig struct {
|
||||
Hostname string
|
||||
Users []system.User
|
||||
ManageEtcHosts EtcHosts `yaml:"manage_etc_hosts"`
|
||||
NetworkConfigPath string
|
||||
}
|
||||
|
||||
type warner func(format string, v ...interface{})
|
||||
|
26
initialize/meta_data.go
Normal file
26
initialize/meta_data.go
Normal file
@ -0,0 +1,26 @@
|
||||
package initialize
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
func ParseMetaData(contents string) (cfg CloudConfig, err error) {
|
||||
var metadata struct {
|
||||
SSHAuthorizedKeyMap map[string]string `json:"public_keys"`
|
||||
Hostname string `json:"hostname"`
|
||||
NetworkConfig struct {
|
||||
ContentPath string `json:"content_path"`
|
||||
} `json:"network_config"`
|
||||
}
|
||||
if err = json.Unmarshal([]byte(contents), &metadata); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
cfg.SSHAuthorizedKeys = make([]string, 0, len(metadata.SSHAuthorizedKeyMap))
|
||||
for _, key := range metadata.SSHAuthorizedKeyMap {
|
||||
cfg.SSHAuthorizedKeys = append(cfg.SSHAuthorizedKeys, key)
|
||||
}
|
||||
cfg.Hostname = metadata.Hostname
|
||||
cfg.NetworkConfigPath = metadata.NetworkConfig.ContentPath
|
||||
return
|
||||
}
|
Loading…
Reference in New Issue
Block a user