← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~jtv/juju-core/mpv-singleton into lp:~maas-maintainers/juju-core/maas-provider-skeleton

 

Jeroen T. Vermeulen has proposed merging lp:~jtv/juju-core/mpv-singleton into lp:~maas-maintainers/juju-core/maas-provider-skeleton.

Commit message:
Instantiate & register the MAAS environment provider.  Make maasEnvironProvider, instead of *maasEnvironProvider, implement EnvironProvider.

Requested reviews:
  MAAS Maintainers (maas-maintainers)

For more details, see:
https://code.launchpad.net/~jtv/juju-core/mpv-singleton/+merge/145777

This was cargo-culted off the EC2 provider: create a singleton instance of the maasEnvironProvider, and register it.

There is a difference, discussed with John Meinel: where the EC2 and OpenStack providers create a singleton instance but then register a separate instance, this code really uses just a single instance.  We believe this is what the EC2 code intended.  The OpenStack provider was cargo-culted off that one, so the fact that it does the same thing as the EC2 one is not particularly significant.


Jeroen
-- 
https://code.launchpad.net/~jtv/juju-core/mpv-singleton/+merge/145777
Your team MAAS Maintainers is requested to review the proposed merge of lp:~jtv/juju-core/mpv-singleton into lp:~maas-maintainers/juju-core/maas-provider-skeleton.
=== modified file 'environs/maas/environprovider.go'
--- environs/maas/environprovider.go	2013-01-29 09:51:16 +0000
+++ environs/maas/environprovider.go	2013-01-31 06:21:19 +0000
@@ -8,25 +8,33 @@
 
 type maasEnvironProvider struct{}
 
+// maasEnvironProvider implements EnvironProvider.
 var _ environs.EnvironProvider = (*maasEnvironProvider)(nil)
 
-func (*maasEnvironProvider) Open(cfg *config.Config) (environs.Environ, error) {
+// The provider is a singleton.
+var providerInstance maasEnvironProvider
+
+func init() {
+	environs.RegisterProvider("maas", &providerInstance)
+}
+
+func (maasEnvironProvider) Open(cfg *config.Config) (environs.Environ, error) {
 	log.Printf("environs/maas: opening environment %q.", cfg.Name())
 	return NewEnviron(cfg)
 }
 
-func (*maasEnvironProvider) Validate(cfg, old *config.Config) (*config.Config, error) {
+func (maasEnvironProvider) Validate(cfg, old *config.Config) (*config.Config, error) {
 	return cfg, nil
 }
 
-func (*maasEnvironProvider) SecretAttrs(*config.Config) (map[string]interface{}, error) {
-	panic("Not implemented")
-}
-
-func (*maasEnvironProvider) PublicAddress() (string, error) {
-	panic("Not implemented")
-}
-
-func (*maasEnvironProvider) PrivateAddress() (string, error) {
+func (maasEnvironProvider) SecretAttrs(*config.Config) (map[string]interface{}, error) {
+	panic("Not implemented")
+}
+
+func (maasEnvironProvider) PublicAddress() (string, error) {
+	panic("Not implemented")
+}
+
+func (maasEnvironProvider) PrivateAddress() (string, error) {
 	panic("Not implemented")
 }


Follow ups