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 authored and Martin Atkins committed May 10, 2016
1 parent bf6eedf commit 16b57ad
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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
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 16b57ad

Please sign in to comment.