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 }