Jeroen T. Vermeulen has proposed merging lp:~jtv/juju-core/mpv-secret-attrs
into lp:~maas-maintainers/juju-core/maas-provider-skeleton.
Commit message:
Implement EnvironProvider.SecretAttrs.
Requested reviews:
MAAS Maintainers (maas-maintainers)
For more details, see:
https://code.launchpad.net/~jtv/juju-core/mpv-secret-attrs/+merge/152698
Yes, this was largely cargo-culted. It's not clear to me what sense it makes
to return the secret portion of something, as opposed to giving you either the
whole thing or only the part that may be seen publicly. But this is what the
interface wants, and what the other providers implement.
Jeroen
--
https://code.launchpad.net/~jtv/juju-core/mpv-secret-attrs/+merge/152698
Your team MAAS Maintainers is requested to review the proposed merge of
lp:~jtv/juju-core/mpv-secret-attrs into
lp:~maas-maintainers/juju-core/maas-provider-skeleton.
=== modified file 'environs/maas/environprovider.go'
--- environs/maas/environprovider.go 2013-03-07 09:26:55 +0000
+++ environs/maas/environprovider.go 2013-03-11 15:14:22 +0000
@@ -28,8 +28,14 @@
}
// SecretAttrs is specified in the EnvironProvider interface.
-func (*maasEnvironProvider) SecretAttrs(*config.Config) (map[string]interface{}, error) {
- panic("Not implemented.")
+func (prov *maasEnvironProvider) SecretAttrs(cfg *config.Config) (map[string]interface{}, error) {
+ secretAttrs := make(map[string]interface{})
+ maasCfg, err := prov.newConfig(cfg)
+ if err != nil {
+ return nil, err
+ }
+ secretAttrs["maas-oauth"] = maasCfg.MAASOAuth()
+ return secretAttrs, nil
}
// PublicAddress is specified in the EnvironProvider interface.
=== added file 'environs/maas/environprovider_test.go'
--- environs/maas/environprovider_test.go 1970-01-01 00:00:00 +0000
+++ environs/maas/environprovider_test.go 2013-03-11 15:14:22 +0000
@@ -0,0 +1,40 @@
+package maas
+
+import (
+ . "launchpad.net/gocheck"
+ "launchpad.net/juju-core/environs/config"
+ "sort"
+)
+
+type EnvironProviderSuite struct {
+ ProviderSuite
+}
+
+var _ = Suite(new(EnvironProviderSuite))
+
+// Return (in lexicographical order) the keys in a map of the given type.
+func getMapKeys(original map[string]interface{}) []string {
+ keys := make([]string, 0)
+ for k, _ := range original {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+ return keys
+}
+
+func (suite *EnvironProviderSuite) TestSecretAttrsReturnsSensitiveMAASAttributes(c *C) {
+ attrs := map[string]interface{}{
+ "maas-oauth": "a:b:c",
+ "maas-server": "http://maas.example.com/maas/api/1.0/",
+ "name": "wheee",
+ "type": "maas",
+ }
+ config, err := config.New(attrs)
+ c.Assert(err, IsNil)
+
+ secretAttrs, err := suite.environ.Provider().SecretAttrs(config)
+ c.Assert(err, IsNil)
+
+ c.Check(getMapKeys(secretAttrs), DeepEquals, []string{"maas-oauth"})
+ c.Check(secretAttrs["maas-oauth"], Equals, attrs["maas-oauth"])
+}
_______________________________________________
Mailing list: https://launchpad.net/~launchpad-reviewers
Post to : [email protected]
Unsubscribe : https://launchpad.net/~launchpad-reviewers
More help : https://help.launchpad.net/ListHelp