Skip to content

Commit

Permalink
Add initial OpenStack single-stack IPv6 support
Browse files Browse the repository at this point in the history
  • Loading branch information
yasminvalim committed Jul 8, 2024
1 parent 494403a commit 033ddf3
Showing 1 changed file with 27 additions and 0 deletions.
27 changes: 27 additions & 0 deletions internal/providers/openstack/openstack.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,15 @@ const (
configDriveUserdataPath = "/openstack/latest/user_data"
)

// TODO: Find a better var name
var (
singleStackMetadataServiceUrl = url.URL{
Scheme: "http",
Host: "fe80::a9fe:a9fe",
Path: "openstack/latest/user_data",
}
)

var (
metadataServiceUrl = url.URL{
Scheme: "http",
Expand Down Expand Up @@ -107,6 +116,11 @@ func fetchConfig(f *resource.Fetcher) (types.Config, report.Report, error) {
return fetchConfigFromMetadataService(f)
})

// TODO: logic to fetch only for OpenStack single-stack IPv6
dispatch("metadata service", func() ([]byte, error) {
return fetchConfigFromSinglestackMetadataService(f)
})

Loop:
for {
select {
Expand Down Expand Up @@ -177,3 +191,16 @@ func fetchConfigFromMetadataService(f *resource.Fetcher) ([]byte, error) {

return res, err
}

// TODO: Find a better func name
func fetchConfigFromSinglestackMetadataService(f *resource.Fetcher) ([]byte, error) {
res, err := f.FetchToBuffer(singleStackMetadataServiceUrl, resource.FetchOptions{})

// the metadata server exists but doesn't contain any actual metadata,
// assume that there is no config specified
if err == resource.ErrNotFound {
return nil, nil
}

return res, err
}

0 comments on commit 033ddf3

Please sign in to comment.