Skip to content

Commit d26f5f9

Browse files
committed
Created the initial scaffolding for the statuscake provider
1 parent a1d05e2 commit d26f5f9

4 files changed

Lines changed: 117 additions & 0 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package main
2+
3+
import (
4+
"github.com/hashicorp/terraform/builtin/providers/statuscake"
5+
"github.com/hashicorp/terraform/plugin"
6+
)
7+
8+
func main() {
9+
plugin.Serve(&plugin.ServeOpts{
10+
ProviderFunc: statuscake.Provider,
11+
})
12+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package statuscake
2+
3+
import (
4+
"github.com/DreamItGetIT/statuscake"
5+
"github.com/hashicorp/terraform/helper/schema"
6+
"github.com/hashicorp/terraform/terraform"
7+
)
8+
9+
func Provider() terraform.ResourceProvider {
10+
return &schema.Provider{
11+
Schema: map[string]*schema.Schema{
12+
"username": &schema.Schema{
13+
Type: schema.TypeString,
14+
Required: true,
15+
DefaultFunc: schema.EnvDefaultFunc("STATUSCAKE_USERNAME", nil),
16+
Description: "Username for StatusCake Account.",
17+
},
18+
"apikey": &schema.Schema{
19+
Type: schema.TypeString,
20+
Required: true,
21+
DefaultFunc: schema.EnvDefaultFunc("STATUSCAKE_APIKEY", nil),
22+
Description: "API Key for StatusCake",
23+
},
24+
},
25+
26+
ResourcesMap: map[string]*schema.Resource{
27+
"statuscake_test": resourceStatusCakeTest(),
28+
},
29+
30+
ConfigureFunc: providerConfigure,
31+
}
32+
}
33+
34+
func providerConfigure(d *schema.ResourceData) (interface{}, error) {
35+
username := d.Get("username").(string)
36+
apiKey := d.Get("apikey").(string)
37+
38+
return statuscake.New(apiKey, username), nil
39+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package statuscake
2+
3+
import (
4+
"os"
5+
"testing"
6+
7+
"github.com/hashicorp/terraform/helper/schema"
8+
"github.com/hashicorp/terraform/terraform"
9+
)
10+
11+
var testAccProviders map[string]terraform.ResourceProvider
12+
var testAccProvider *schema.Provider
13+
14+
func init() {
15+
testAccProvider = Provider().(*schema.Provider)
16+
testAccProviders = map[string]terraform.ResourceProvider{
17+
"statuscake": testAccProvider,
18+
}
19+
}
20+
21+
func TestProvider(t *testing.T) {
22+
if err := Provider().(*schema.Provider).InternalValidate(); err != nil {
23+
t.Fatalf("err: %s", err)
24+
}
25+
}
26+
27+
func TestProvider_impl(t *testing.T) {
28+
var _ terraform.ResourceProvider = Provider()
29+
}
30+
31+
func testAccPreCheck(t *testing.T) {
32+
if v := os.Getenv("STATUSCAKE_USERNAME"); v == "" {
33+
t.Fatal("STATUSCAKE_USERNAME must be set for acceptance tests")
34+
}
35+
if v := os.Getenv("STATUSCAKE_APIKEY"); v == "" {
36+
t.Fatal("STATUSCAKE_APIKEY must be set for acceptance tests")
37+
}
38+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package statuscake
2+
3+
import "github.com/hashicorp/terraform/helper/schema"
4+
5+
func resourceStatusCakeTest() *schema.Resource {
6+
return &schema.Resource{
7+
Create: CreateTest,
8+
Update: UpdateTest,
9+
Delete: DeleteTest,
10+
Read: ReadTest,
11+
}
12+
}
13+
14+
func CreateTest(d *schema.ResourceData, meta interface{}) error {
15+
return nil
16+
}
17+
18+
func UpdateTest(d *schema.ResourceData, meta interface{}) error {
19+
return nil
20+
}
21+
22+
func DeleteTest(d *schema.ResourceData, meta interface{}) error {
23+
return nil
24+
}
25+
26+
func ReadTest(d *schema.ResourceData, meta interface{}) error {
27+
return nil
28+
}

0 commit comments

Comments
 (0)