compare regions against valid regions

pull/4811/merge
Matthew Hooker 9 years ago
parent 3afd77a5e4
commit 06c7136e30
No known key found for this signature in database
GPG Key ID: 7B5F933D9CE8C6A1

@ -35,16 +35,6 @@ func (b *Builder) Prepare(raws ...interface{}) ([]string, error) {
return nil, nil
}
func contains(slice []string, item string) bool {
set := make(map[string]struct{}, len(slice))
for _, s := range slice {
set[s] = struct{}{}
}
_, ok := set[item]
return ok
}
func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packer.Artifact, error) {
client := godo.NewClient(oauth2.NewClient(oauth2.NoContext, &apiTokenSource{
AccessToken: b.config.APIToken,
@ -67,31 +57,14 @@ func (b *Builder) Run(ui packer.Ui, hook packer.Hook, cache packer.Cache) (packe
return nil, fmt.Errorf("DigitalOcean: Unable to get regions, %s", err)
}
var dcs []string
validRegions := make(map[string]struct{})
for _, val := range regions {
dcs = append(dcs, val.Slug)
}
regionSet := make(map[string]struct{})
regionsMap := make([]string, 0, len(b.config.SnapshotRegions))
regionSet[b.config.Region] = struct{}{}
for _, region := range b.config.SnapshotRegions {
// If we already saw the region, then don't look again
if _, ok := regionSet[region]; ok {
continue
}
// Mark that we saw the region
regionSet[region] = struct{}{}
regionsMap = append(regionsMap, region)
validRegions[val.Slug] = struct{}{}
}
for _, val := range regionsMap {
if contains(dcs, val) {
continue
} else {
return nil, fmt.Errorf("DigitalOcean: Invalid region, %s", val)
for _, region := range append(b.config.SnapshotRegions, b.config.Region) {
if _, ok := validRegions[region]; !ok {
return nil, fmt.Errorf("DigitalOcean: Invalid region, %s", region)
}
}
}

Loading…
Cancel
Save