github.com/axw/juju@v0.0.0-20161005053422-4bd6544d08d4/provider/rackspace/provider.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package rackspace 5 6 import ( 7 "strings" 8 9 "github.com/juju/juju/environs" 10 "github.com/juju/juju/environs/config" 11 ) 12 13 type environProvider struct { 14 environs.EnvironProvider 15 } 16 17 var providerInstance *environProvider 18 19 // PrepareConfig is part of the EnvironProvider interface. 20 func (p *environProvider) PrepareConfig(args environs.PrepareConfigParams) (*config.Config, error) { 21 args.Cloud = transformCloudSpec(args.Cloud) 22 return p.EnvironProvider.PrepareConfig(args) 23 } 24 25 // Open is part of the EnvironProvider interface. 26 func (p *environProvider) Open(args environs.OpenParams) (environs.Environ, error) { 27 args.Cloud = transformCloudSpec(args.Cloud) 28 return p.EnvironProvider.Open(args) 29 } 30 31 func transformCloudSpec(spec environs.CloudSpec) environs.CloudSpec { 32 // Rackspace regions are expected to be uppercase, but Juju 33 // stores and displays them in lowercase in the CLI. Ensure 34 // they're uppercase when they get to the Rackspace API. 35 spec.Region = strings.ToUpper(spec.Region) 36 return spec 37 }