From 478e133852c1c49f98c0388920142dc507479487 Mon Sep 17 00:00:00 2001 From: stack72 Date: Mon, 28 Sep 2015 11:39:32 +0100 Subject: [PATCH] Created the initial scaffolding for the statuscake provider --- provider.go | 39 ++++++++++++++++++++++++++++++++++++++ provider_test.go | 38 +++++++++++++++++++++++++++++++++++++ resource_statuscaketest.go | 28 +++++++++++++++++++++++++++ 3 files changed, 105 insertions(+) create mode 100644 provider.go create mode 100644 provider_test.go create mode 100644 resource_statuscaketest.go diff --git a/provider.go b/provider.go new file mode 100644 index 0000000..7402e80 --- /dev/null +++ b/provider.go @@ -0,0 +1,39 @@ +package statuscake + +import ( + "github.com/DreamItGetIT/statuscake" + "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform/terraform" +) + +func Provider() terraform.ResourceProvider { + return &schema.Provider{ + Schema: map[string]*schema.Schema{ + "username": &schema.Schema{ + Type: schema.TypeString, + Required: true, + DefaultFunc: schema.EnvDefaultFunc("STATUSCAKE_USERNAME", nil), + Description: "Username for StatusCake Account.", + }, + "apikey": &schema.Schema{ + Type: schema.TypeString, + Required: true, + DefaultFunc: schema.EnvDefaultFunc("STATUSCAKE_APIKEY", nil), + Description: "API Key for StatusCake", + }, + }, + + ResourcesMap: map[string]*schema.Resource{ + "statuscake_test": resourceStatusCakeTest(), + }, + + ConfigureFunc: providerConfigure, + } +} + +func providerConfigure(d *schema.ResourceData) (interface{}, error) { + username := d.Get("username").(string) + apiKey := d.Get("apikey").(string) + + return statuscake.New(apiKey, username), nil +} diff --git a/provider_test.go b/provider_test.go new file mode 100644 index 0000000..83045d0 --- /dev/null +++ b/provider_test.go @@ -0,0 +1,38 @@ +package statuscake + +import ( + "os" + "testing" + + "github.com/hashicorp/terraform/helper/schema" + "github.com/hashicorp/terraform/terraform" +) + +var testAccProviders map[string]terraform.ResourceProvider +var testAccProvider *schema.Provider + +func init() { + testAccProvider = Provider().(*schema.Provider) + testAccProviders = map[string]terraform.ResourceProvider{ + "statuscake": testAccProvider, + } +} + +func TestProvider(t *testing.T) { + if err := Provider().(*schema.Provider).InternalValidate(); err != nil { + t.Fatalf("err: %s", err) + } +} + +func TestProvider_impl(t *testing.T) { + var _ terraform.ResourceProvider = Provider() +} + +func testAccPreCheck(t *testing.T) { + if v := os.Getenv("STATUSCAKE_USERNAME"); v == "" { + t.Fatal("STATUSCAKE_USERNAME must be set for acceptance tests") + } + if v := os.Getenv("STATUSCAKE_APIKEY"); v == "" { + t.Fatal("STATUSCAKE_APIKEY must be set for acceptance tests") + } +} diff --git a/resource_statuscaketest.go b/resource_statuscaketest.go new file mode 100644 index 0000000..f34a97a --- /dev/null +++ b/resource_statuscaketest.go @@ -0,0 +1,28 @@ +package statuscake + +import "github.com/hashicorp/terraform/helper/schema" + +func resourceStatusCakeTest() *schema.Resource { + return &schema.Resource{ + Create: CreateTest, + Update: UpdateTest, + Delete: DeleteTest, + Read: ReadTest, + } +} + +func CreateTest(d *schema.ResourceData, meta interface{}) error { + return nil +} + +func UpdateTest(d *schema.ResourceData, meta interface{}) error { + return nil +} + +func DeleteTest(d *schema.ResourceData, meta interface{}) error { + return nil +} + +func ReadTest(d *schema.ResourceData, meta interface{}) error { + return nil +} -- 2.41.0