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  }