func (api *API) parseMetadataFromParams(p params.CloudImageMetadata, env environs.Environ) (cloudimagemetadata.Metadata, error) { result := cloudimagemetadata.Metadata{ cloudimagemetadata.MetadataAttributes{ Stream: p.Stream, Region: p.Region, Version: p.Version, Series: p.Series, Arch: p.Arch, VirtType: p.VirtType, RootStorageType: p.RootStorageType, RootStorageSize: p.RootStorageSize, Source: p.Source, }, p.Priority, p.ImageId, } // Fill in any required default values. if p.Stream == "" { result.Stream = env.Config().ImageStream() } if p.Source == "" { result.Source = "custom" } if result.Arch == "" { result.Arch = "amd64" } if result.Series == "" { result.Series = config.PreferredSeries(env.Config()) } if result.Region == "" { // If the env supports regions, use the env default. if r, ok := env.(simplestreams.HasRegion); ok { spec, err := r.Region() if err != nil { return cloudimagemetadata.Metadata{}, errors.Annotatef(err, "getting cloud region") } result.Region = spec.Region } } return result, nil }