Skip to content
This repository was archived by the owner on Feb 20, 2023. It is now read-only.

Commit 653f94f

Browse files
Merge pull request #93 from marcelomilera/feature/add-pingdom-teams-data-source
Add pingdom_team data source
2 parents 0b913da + c13cf2f commit 653f94f

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed

pingdom/data_source_pingdom_team.go

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package pingdom
2+
3+
import (
4+
"fmt"
5+
"log"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
8+
"github.com/russellcardullo/go-pingdom/pingdom"
9+
)
10+
11+
func dataSourcePingdomTeam() *schema.Resource {
12+
return &schema.Resource{
13+
Read: dataSourcePingdomTeamRead,
14+
15+
Schema: map[string]*schema.Schema{
16+
"name": {
17+
Type: schema.TypeString,
18+
Required: true,
19+
ForceNew: false,
20+
},
21+
"member_ids": {
22+
Type: schema.TypeSet,
23+
Optional: true,
24+
ForceNew: false,
25+
Elem: &schema.Schema{Type: schema.TypeInt},
26+
},
27+
},
28+
}
29+
}
30+
31+
func dataSourcePingdomTeamRead(d *schema.ResourceData, meta interface{}) error {
32+
client := meta.(*pingdom.Client)
33+
name := d.Get("name").(string)
34+
teams, err := client.Teams.List()
35+
log.Printf("==== teams : %v", teams)
36+
if err != nil {
37+
return fmt.Errorf("Error retrieving team: %s", err)
38+
}
39+
var found *pingdom.TeamResponse
40+
for _, team := range teams {
41+
if team.Name == name {
42+
log.Printf("Team: %v", team)
43+
found = &team
44+
break
45+
}
46+
}
47+
if found == nil {
48+
return fmt.Errorf("User '%s' not found", name)
49+
}
50+
if err = d.Set("name", found.Name); err != nil {
51+
return fmt.Errorf("Error setting name: %s", err)
52+
}
53+
54+
var memberIds []int
55+
for _, member := range found.Members {
56+
memberIds = append(memberIds, member.ID)
57+
}
58+
59+
if err = d.Set("member_ids", memberIds); err != nil {
60+
return err
61+
}
62+
63+
d.SetId(fmt.Sprintf("%d", found.ID))
64+
return nil
65+
}

pingdom/provider.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ func Provider() terraform.ResourceProvider {
2323
},
2424
DataSourcesMap: map[string]*schema.Resource{
2525
"pingdom_contact": dataSourcePingdomContact(),
26+
"pingdom_team": dataSourcePingdomTeam(),
2627
},
2728
ConfigureFunc: providerConfigure,
2829
}

0 commit comments

Comments
 (0)