github.com/makyo/juju@v0.0.0-20160425123129-2608902037e9/provider/azure/init.go (about) 1 // Copyright 2015 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package azure 5 6 import ( 7 "github.com/juju/errors" 8 9 "github.com/juju/juju/environs" 10 "github.com/juju/juju/provider/azure/internal/azurestorage" 11 "github.com/juju/juju/storage" 12 "github.com/juju/juju/storage/provider/registry" 13 ) 14 15 const ( 16 providerType = "azure" 17 storageProviderType storage.ProviderType = "azure" 18 ) 19 20 // NewProviders instantiates and returns Azure providers using the given 21 // configuration. 22 func NewProviders(config ProviderConfig) (environs.EnvironProvider, storage.Provider, error) { 23 environProvider, err := NewEnvironProvider(config) 24 if err != nil { 25 return nil, nil, errors.Trace(err) 26 } 27 return environProvider, &azureStorageProvider{environProvider}, nil 28 } 29 30 func init() { 31 environProvider, storageProvider, err := NewProviders(ProviderConfig{ 32 NewStorageClient: azurestorage.NewClient, 33 StorageAccountNameGenerator: RandomStorageAccountName, 34 }) 35 if err != nil { 36 panic(err) 37 } 38 39 environs.RegisterProvider(providerType, environProvider) 40 registry.RegisterProvider(storageProviderType, storageProvider) 41 registry.RegisterEnvironStorageProviders(providerType, storageProviderType) 42 43 // TODO(axw) register an image metadata data source that queries 44 // the Azure image registry, and introduce a way to disable the 45 // common simplestreams source. 46 }