Compare commits
12 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
4355a05d55 | ||
|
52c44923dd | ||
|
47748ef4b6 | ||
|
8eca10200e | ||
|
43be8c8996 | ||
|
19b4b1160e | ||
|
ce6fccfb3c | ||
|
7d89aefb82 | ||
|
2369e2a920 | ||
|
6d808048d3 | ||
|
276f0b5d99 | ||
|
92bd5ca5d4 |
@@ -14,7 +14,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
version = "0.8.4"
|
version = "0.8.7"
|
||||||
datasourceInterval = 100 * time.Millisecond
|
datasourceInterval = 100 * time.Millisecond
|
||||||
datasourceMaxInterval = 30 * time.Second
|
datasourceMaxInterval = 30 * time.Second
|
||||||
datasourceTimeout = 5 * time.Minute
|
datasourceTimeout = 5 * time.Minute
|
||||||
|
@@ -27,7 +27,6 @@ const (
|
|||||||
Ec2MetadataUrl = BaseUrl + Ec2ApiVersion + "/meta-data"
|
Ec2MetadataUrl = BaseUrl + Ec2ApiVersion + "/meta-data"
|
||||||
OpenstackApiVersion = "openstack/2012-08-10"
|
OpenstackApiVersion = "openstack/2012-08-10"
|
||||||
OpenstackUserdataUrl = BaseUrl + OpenstackApiVersion + "/user_data"
|
OpenstackUserdataUrl = BaseUrl + OpenstackApiVersion + "/user_data"
|
||||||
OpenstackMetadataUrl = BaseUrl + OpenstackApiVersion + "/meta_data.json"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type metadataService struct{}
|
type metadataService struct{}
|
||||||
@@ -65,7 +64,14 @@ func (ms *metadataService) FetchUserdata() ([]byte, error) {
|
|||||||
} else if _, ok := err.(pkg.ErrTimeout); ok {
|
} else if _, ok := err.(pkg.ErrTimeout); ok {
|
||||||
return data, err
|
return data, err
|
||||||
}
|
}
|
||||||
return client.GetRetry(OpenstackUserdataUrl)
|
|
||||||
|
if data, err := client.GetRetry(OpenstackUserdataUrl); err == nil {
|
||||||
|
return data, err
|
||||||
|
} else if _, ok := err.(pkg.ErrNotFound); ok {
|
||||||
|
return []byte{}, nil
|
||||||
|
} else {
|
||||||
|
return data, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (ms *metadataService) Type() string {
|
func (ms *metadataService) Type() string {
|
||||||
@@ -73,12 +79,6 @@ func (ms *metadataService) Type() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func fetchMetadata(client getter) ([]byte, error) {
|
func fetchMetadata(client getter) ([]byte, error) {
|
||||||
if metadata, err := client.GetRetry(OpenstackMetadataUrl); err == nil {
|
|
||||||
return metadata, nil
|
|
||||||
} else if _, ok := err.(pkg.ErrTimeout); ok {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
attrs := make(map[string]interface{})
|
attrs := make(map[string]interface{})
|
||||||
if keynames, err := fetchAttributes(client, fmt.Sprintf("%s/public-keys", Ec2MetadataUrl)); err == nil {
|
if keynames, err := fetchAttributes(client, fmt.Sprintf("%s/public-keys", Ec2MetadataUrl)); err == nil {
|
||||||
keyIDs := make(map[string]string)
|
keyIDs := make(map[string]string)
|
||||||
@@ -110,6 +110,18 @@ func fetchMetadata(client getter) ([]byte, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if localAddr, err := fetchAttribute(client, fmt.Sprintf("%s/local-ipv4", Ec2MetadataUrl)); err == nil {
|
||||||
|
attrs["local-ipv4"] = localAddr
|
||||||
|
} else if _, ok := err.(pkg.ErrNotFound); !ok {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if publicAddr, err := fetchAttribute(client, fmt.Sprintf("%s/public-ipv4", Ec2MetadataUrl)); err == nil {
|
||||||
|
attrs["public-ipv4"] = publicAddr
|
||||||
|
} else if _, ok := err.(pkg.ErrNotFound); !ok {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
if content_path, err := fetchAttribute(client, fmt.Sprintf("%s/network_config/content_path", Ec2MetadataUrl)); err == nil {
|
if content_path, err := fetchAttribute(client, fmt.Sprintf("%s/network_config/content_path", Ec2MetadataUrl)); err == nil {
|
||||||
attrs["network_config"] = map[string]string{
|
attrs["network_config"] = map[string]string{
|
||||||
"content_path": content_path,
|
"content_path": content_path,
|
||||||
|
@@ -145,12 +145,6 @@ func TestFetchMetadata(t *testing.T) {
|
|||||||
},
|
},
|
||||||
expect: []byte(`{"hostname":"host","network_config":{"content_path":"path"},"public_keys":{"test1":"key"}}`),
|
expect: []byte(`{"hostname":"host","network_config":{"content_path":"path"},"public_keys":{"test1":"key"}}`),
|
||||||
},
|
},
|
||||||
{
|
|
||||||
metadata: map[string]string{
|
|
||||||
"http://169.254.169.254/openstack/2012-08-10/meta_data.json": "test",
|
|
||||||
},
|
|
||||||
expect: []byte("test"),
|
|
||||||
},
|
|
||||||
{err: pkg.ErrTimeout{fmt.Errorf("test error")}},
|
{err: pkg.ErrTimeout{fmt.Errorf("test error")}},
|
||||||
} {
|
} {
|
||||||
client := &TestHttpClient{tt.metadata, tt.err}
|
client := &TestHttpClient{tt.metadata, tt.err}
|
||||||
|
Reference in New Issue
Block a user