alibabacloudstack/data_source_apsarastack_ascm_users.go (206 lines of code) (raw):
package alibabacloudstack
// Generated By apsara-orchestration-generator
// With List Api ascm - 2019-05-10 - ListUsers : 748635c8-bab3-4e6a-8b06-3d61dd6523a1
import (
"encoding/json"
"strconv"
"github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/connectivity"
"github.com/aliyun/terraform-provider-alibabacloudstack/alibabacloudstack/errmsgs"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)
// parameter switch map
func dataSourceAlibabacloudStackAscmUsers() *schema.Resource {
return &schema.Resource{
Read: dataSourceAlibabacloudStackAscmUsersRead,
Schema: map[string]*schema.Schema{
"ids": {
Type: schema.TypeList,
Optional: true,
Elem: &schema.Schema{Type: schema.TypeString},
Computed: true,
ForceNew: true,
MinItems: 1,
},
"login_name": {
Type: schema.TypeString,
Optional: true,
},
"role_id": {
Type: schema.TypeInt,
Optional: true,
},
"login_policy_id": {
Type: schema.TypeInt,
Optional: true,
},
"organization_id": {
Type: schema.TypeInt,
Optional: true,
},
"current_page": {
Type: schema.TypeInt,
Optional: true,
},
"page_size": {
Type: schema.TypeInt,
Optional: true,
},
"status": {
Type: schema.TypeString,
Optional: true,
},
"mark": {
Type: schema.TypeString,
Optional: true,
},
"output_file": {
Type: schema.TypeString,
Optional: true,
},
"users": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"cellphone_num": {
Type: schema.TypeString,
Computed: true,
},
"default": {
Type: schema.TypeBool,
Computed: true,
},
"deleted": {
Type: schema.TypeBool,
Computed: true,
},
"display_name": {
Type: schema.TypeString,
Computed: true,
},
"email": {
Type: schema.TypeString,
Computed: true,
},
"enable_ding_talk": {
Type: schema.TypeBool,
Computed: true,
},
"enable_email": {
Type: schema.TypeBool,
Computed: true,
},
"enable_short_message": {
Type: schema.TypeBool,
Computed: true,
},
"last_login_time": {
Type: schema.TypeInt,
Computed: true,
},
"login_name": {
Type: schema.TypeString,
Computed: true,
},
"mobile_nation_code": {
Type: schema.TypeString,
Computed: true,
},
"parent_pk": {
Type: schema.TypeString,
Computed: true,
},
"primary_key": {
Type: schema.TypeString,
Computed: true,
},
"status": {
Type: schema.TypeString,
Computed: true,
},
"organization_id": {
Type: schema.TypeInt,
Computed: true,
},
},
},
},
},
}
}
func dataSourceAlibabacloudStackAscmUsersRead(d *schema.ResourceData, meta interface{}) error {
// request list api
client := meta.(*connectivity.AlibabacloudStackClient)
request := client.NewCommonRequest("POST", "ascm", "2019-05-10", "ListUsers", "/ascm/auth/user/listUsers")
bodyMap := make(map[string]string)
if v, ok := d.GetOk("login_name"); ok && v.(string) != "" {
bodyMap["LoginName"] = v.(string)
}
if v, ok := d.GetOk("role_id"); ok {
bodyMap["RoleId"] = strconv.Itoa(v.(int))
}
if v, ok := d.GetOk("login_policy_id"); ok {
bodyMap["LoginPolicyId"] = strconv.Itoa(v.(int))
}
if v, ok := d.GetOk("organization_id"); ok {
bodyMap["OrganizationId"] = strconv.Itoa(v.(int))
}
if v, ok := d.GetOk("current_page"); ok {
bodyMap["CurrentPage"] = strconv.Itoa(v.(int))
}
if v, ok := d.GetOk("page_size"); ok {
bodyMap["PageSize"] = strconv.Itoa(v.(int))
}
if v, ok := d.GetOk("status"); ok && v.(string) != "" {
bodyMap["Status"] = v.(string)
}
if v, ok := d.GetOk("mark"); ok && v.(string) != "" {
bodyMap["Mark"] = v.(string)
}
mergeMaps(request.QueryParams, bodyMap)
var resp = &User{}
bresponse, err := client.ProcessCommonRequest(request)
addDebug("ListUsers", bresponse, request, request.QueryParams)
if err != nil {
errmsg := ""
if bresponse != nil {
errmsg = errmsgs.GetBaseResponseErrorMessage(bresponse.BaseResponse)
} else {
return err
}
if errmsgs.IsExpectedErrors(err, []string{"ErrorUserNotFound"}) {
return errmsgs.WrapErrorf(err, errmsgs.NotFoundMsg, errmsgs.AlibabacloudStackSdkGoERROR)
}
return errmsgs.WrapErrorf(err, errmsgs.RequestV1ErrorMsg, "ListUsers", errmsgs.AlibabacloudStackSdkGoERROR, errmsg)
}
err = json.Unmarshal(bresponse.GetHttpContentBytes(), resp)
if err != nil {
return errmsgs.WrapError(err)
}
// mapping resp
var users []map[string]interface{}
for _, Data_item := range resp.Data {
users_item := map[string]interface{}{
"cellphone_num": Data_item.CellphoneNum,
"default": Data_item.Default,
"deleted": Data_item.Deleted,
"display_name": Data_item.DisplayName,
"email": Data_item.Email,
"enable_ding_talk": Data_item.EnableDingTalk,
"enable_email": Data_item.EnableEmail,
"enable_short_message": Data_item.EnableShortMessage,
"last_login_time": Data_item.LastLoginTime,
"login_name": Data_item.LoginName,
"mobile_nation_code": Data_item.MobileNationCode,
"parent_pk": Data_item.ParentPk,
"primary_key": Data_item.PrimaryKey,
"status": Data_item.Status,
"organization_id": Data_item.Organization.ID,
}
users = append(users, users_item)
}
// set result
if err := d.Set("users", users); err != nil {
return errmsgs.WrapError(err)
}
var primary_key []string
for _, users_item := range users {
primary_key = append(primary_key, users_item["login_name"].(string))
}
d.SetId(dataResourceIdHash(primary_key))
return nil
}