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  }