github.com/danp/terraform@v0.9.5-0.20170426144147-39d740081351/builtin/providers/opsgenie/data_source_opsgenie_user.go (about) 1 package opsgenie 2 3 import ( 4 "fmt" 5 "log" 6 7 "github.com/hashicorp/terraform/helper/schema" 8 "github.com/opsgenie/opsgenie-go-sdk/user" 9 ) 10 11 func dataSourceOpsGenieUser() *schema.Resource { 12 return &schema.Resource{ 13 Read: dataSourceOpsGenieUserRead, 14 15 Schema: map[string]*schema.Schema{ 16 "username": { 17 Type: schema.TypeString, 18 Required: true, 19 }, 20 "full_name": { 21 Type: schema.TypeString, 22 Computed: true, 23 }, 24 "role": { 25 Type: schema.TypeString, 26 Computed: true, 27 }, 28 }, 29 } 30 } 31 32 func dataSourceOpsGenieUserRead(d *schema.ResourceData, meta interface{}) error { 33 client := meta.(*OpsGenieClient).users 34 35 username := d.Get("username").(string) 36 37 log.Printf("[INFO] Reading OpsGenie user '%s'", username) 38 39 o := user.ListUsersRequest{} 40 resp, err := client.List(o) 41 if err != nil { 42 return nil 43 } 44 45 var found *user.GetUserResponse 46 47 if len(resp.Users) > 0 { 48 for _, user := range resp.Users { 49 if user.Username == username { 50 found = &user 51 break 52 } 53 } 54 } 55 56 if found == nil { 57 return fmt.Errorf("Unable to locate any user with the username: %s", username) 58 } 59 60 d.SetId(found.Id) 61 d.Set("username", found.Username) 62 d.Set("full_name", found.Fullname) 63 d.Set("role", found.Role) 64 65 return nil 66 }