github.com/mwhudson/juju@v0.0.0-20160512215208-90ff01f3497f/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 "github.com/juju/utils/clock" 9 10 "github.com/juju/juju/environs" 11 "github.com/juju/juju/provider/azure/internal/azurestorage" 12 "github.com/juju/juju/storage" 13 "github.com/juju/juju/storage/provider/registry" 14 ) 15 16 const ( 17 providerType = "azure" 18 storageProviderType storage.ProviderType = "azure" 19 ) 20 21 // NewProviders instantiates and returns Azure providers using the given 22 // configuration. 23 func NewProviders(config ProviderConfig) (environs.EnvironProvider, storage.Provider, error) { 24 environProvider, err := NewEnvironProvider(config) 25 if err != nil { 26 return nil, nil, errors.Trace(err) 27 } 28 return environProvider, &azureStorageProvider{environProvider}, nil 29 } 30 31 func init() { 32 environProvider, storageProvider, err := NewProviders(ProviderConfig{ 33 NewStorageClient: azurestorage.NewClient, 34 StorageAccountNameGenerator: RandomStorageAccountName, 35 RetryClock: &clock.WallClock, 36 }) 37 if err != nil { 38 panic(err) 39 } 40 41 environs.RegisterProvider(providerType, environProvider) 42 registry.RegisterProvider(storageProviderType, storageProvider) 43 registry.RegisterEnvironStorageProviders(providerType, storageProviderType) 44 45 // TODO(axw) register an image metadata data source that queries 46 // the Azure image registry, and introduce a way to disable the 47 // common simplestreams source. 48 }