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  }