Skip to content

Commit

Permalink
provider/null: null_data_source data source
Browse files Browse the repository at this point in the history
A companion to the null_resource resource, this is here primarily to
enable manual quick testing of data sources workflows without depending
on any external services.

The "inputs" map gets copied to the computed "outputs" map on read,
"rand" gives a random number to exercise cases with constantly-changing
values (an anti-pattern!), and "has_computed_default" is settable in
config but computed if not set.
  • Loading branch information
apparentlymart committed May 8, 2016
1 parent 4777f7f commit 1711372
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
54 changes: 54 additions & 0 deletions builtin/providers/null/data_source.go
@@ -0,0 +1,54 @@
package null

import (
"fmt"
"math/rand"
"time"

"github.com/hashicorp/terraform/helper/schema"
)

func init() {
rand.Seed(time.Now().Unix())
}

func dataSource() *schema.Resource {
return &schema.Resource{
Read: dataSourceRead,

Schema: map[string]*schema.Schema{
"inputs": &schema.Schema{
Type: schema.TypeMap,
Optional: true,
},
"outputs": &schema.Schema{
Type: schema.TypeMap,
Computed: true,
},
"random": &schema.Schema{
Type: schema.TypeString,
Computed: true,
},
"has_computed_default": &schema.Schema{
Type: schema.TypeString,
Optional: true,
Computed: true,
},
},
}
}

func dataSourceRead(d *schema.ResourceData, meta interface{}) error {

inputs := d.Get("inputs")
d.Set("outputs", inputs)

d.Set("random", fmt.Sprintf("%d", rand.Int()))
if d.Get("has_computed_default") == "" {
d.Set("has_computed_default", "default")
}

d.SetId("static")

return nil
}
4 changes: 4 additions & 0 deletions builtin/providers/null/provider.go
Expand Up @@ -13,5 +13,9 @@ func Provider() terraform.ResourceProvider {
ResourcesMap: map[string]*schema.Resource{
"null_resource": resource(),
},

DataSourcesMap: map[string]*schema.Resource{
"null_data_source": dataSource(),
},
}
}

0 comments on commit 1711372

Please sign in to comment.