Samuel A. Falvo II | fd78c30 | 2013-06-25 16:35:32 -0700 | [diff] [blame] | 1 | package gophercloud |
| 2 | |
Samuel A. Falvo II | 4e89518 | 2013-06-26 15:44:18 -0700 | [diff] [blame^] | 3 | // Provider structures exist for each tangible provider of OpenStack service. |
| 4 | // For example, Rackspace, Hewlett-Packard, and NASA might have their own instance of this structure. |
| 5 | // |
| 6 | // At a minimum, a provider must expose an authentication endpoint. |
Samuel A. Falvo II | fd78c30 | 2013-06-25 16:35:32 -0700 | [diff] [blame] | 7 | type Provider struct { |
Samuel A. Falvo II | 5d0d74c | 2013-06-25 17:23:18 -0700 | [diff] [blame] | 8 | AuthEndpoint string |
Samuel A. Falvo II | fd78c30 | 2013-06-25 16:35:32 -0700 | [diff] [blame] | 9 | } |
| 10 | |
Samuel A. Falvo II | 4e89518 | 2013-06-26 15:44:18 -0700 | [diff] [blame^] | 11 | // RegisterProvider allows a unit test to register a mythical provider convenient for testing. |
| 12 | // If the provider structure lacks adequate configuration, or the configuration given has some |
| 13 | // detectable error, an ErrConfiguration error will result. |
| 14 | func (c *Context) RegisterProvider(name string, p Provider) error { |
Samuel A. Falvo II | 5d0d74c | 2013-06-25 17:23:18 -0700 | [diff] [blame] | 15 | if p.AuthEndpoint == "" { |
| 16 | return ErrConfiguration |
| 17 | } |
| 18 | |
Samuel A. Falvo II | fd78c30 | 2013-06-25 16:35:32 -0700 | [diff] [blame] | 19 | c.providerMap[name] = p |
| 20 | return nil |
| 21 | } |
| 22 | |
Samuel A. Falvo II | 4e89518 | 2013-06-26 15:44:18 -0700 | [diff] [blame^] | 23 | // ProviderByName will locate a provider amongst those previously registered, if it exists. |
| 24 | // If the named provider has not been registered, an ErrProvider error will result. |
| 25 | func (c *Context) ProviderByName(name string) (p Provider, err error) { |
Samuel A. Falvo II | fd78c30 | 2013-06-25 16:35:32 -0700 | [diff] [blame] | 26 | for provider, descriptor := range c.providerMap { |
| 27 | if name == provider { |
| 28 | return descriptor, nil |
| 29 | } |
| 30 | } |
Samuel A. Falvo II | 4e89518 | 2013-06-26 15:44:18 -0700 | [diff] [blame^] | 31 | return Provider{}, ErrProvider |
Samuel A. Falvo II | 839428e | 2013-06-25 18:02:24 -0700 | [diff] [blame] | 32 | } |