Skip to content

Commit d54054c

Browse files
committed
New Resource: alicloud_amqp_open_source_account; New Data Source: alicloud_amqp_open_source_accounts
1 parent 92ec985 commit d54054c

8 files changed

Lines changed: 999 additions & 0 deletions
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
// Package alicloud. This file is generated automatically. Please do not modify it manually, thank you!
2+
package alicloud
3+
4+
import (
5+
"fmt"
6+
"time"
7+
8+
"github.com/PaesslerAG/jsonpath"
9+
"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
10+
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
11+
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
12+
)
13+
14+
func dataSourceAliCloudAmqpOpenSourceAccounts() *schema.Resource {
15+
return &schema.Resource{
16+
Read: dataSourceAliCloudAmqpOpenSourceAccountRead,
17+
Schema: map[string]*schema.Schema{
18+
"ids": {
19+
Type: schema.TypeList,
20+
Optional: true,
21+
Elem: &schema.Schema{Type: schema.TypeString},
22+
Computed: true,
23+
},
24+
"instance_id": {
25+
Type: schema.TypeString,
26+
Required: true,
27+
},
28+
"accounts": {
29+
Type: schema.TypeList,
30+
Computed: true,
31+
Elem: &schema.Resource{
32+
Schema: map[string]*schema.Schema{
33+
"description": {
34+
Type: schema.TypeString,
35+
Computed: true,
36+
},
37+
"instance_id": {
38+
Type: schema.TypeString,
39+
Computed: true,
40+
},
41+
"password": {
42+
Type: schema.TypeString,
43+
Computed: true,
44+
Sensitive: true,
45+
},
46+
"user_name": {
47+
Type: schema.TypeString,
48+
Computed: true,
49+
},
50+
"id": {
51+
Type: schema.TypeString,
52+
Computed: true,
53+
},
54+
},
55+
},
56+
},
57+
"output_file": {
58+
Type: schema.TypeString,
59+
Optional: true,
60+
},
61+
},
62+
}
63+
}
64+
65+
func dataSourceAliCloudAmqpOpenSourceAccountRead(d *schema.ResourceData, meta interface{}) error {
66+
client := meta.(*connectivity.AliyunClient)
67+
68+
var objects []map[string]interface{}
69+
70+
idsMap := make(map[string]string)
71+
if v, ok := d.GetOk("ids"); ok {
72+
for _, vv := range v.([]interface{}) {
73+
if vv == nil {
74+
continue
75+
}
76+
idsMap[vv.(string)] = vv.(string)
77+
}
78+
}
79+
80+
var request map[string]interface{}
81+
var response map[string]interface{}
82+
var query map[string]interface{}
83+
action := "ListOpenSourceAccounts"
84+
var err error
85+
request = make(map[string]interface{})
86+
query = make(map[string]interface{})
87+
request["RegionId"] = client.RegionId
88+
if v, ok := d.GetOk("instance_id"); ok {
89+
request["InstanceId"] = v
90+
}
91+
request["InstanceId"] = d.Get("instance_id")
92+
wait := incrementalWait(3*time.Second, 5*time.Second)
93+
err = resource.Retry(client.GetRetryTimeout(d.Timeout(schema.TimeoutRead)), func() *resource.RetryError {
94+
response, err = client.RpcPost("amqp-open", "2019-12-12", action, query, request, true)
95+
96+
if err != nil {
97+
if NeedRetry(err) {
98+
wait()
99+
return resource.RetryableError(err)
100+
}
101+
return resource.NonRetryableError(err)
102+
}
103+
addDebug(action, response, request)
104+
return nil
105+
})
106+
if err != nil {
107+
return WrapErrorf(err, DefaultErrorMsg, d.Id(), action, AlibabaCloudSdkGoERROR)
108+
}
109+
110+
resp, _ := jsonpath.Get("$.Data[*]", response)
111+
112+
result, _ := resp.([]interface{})
113+
for _, v := range result {
114+
item := v.(map[string]interface{})
115+
id := fmt.Sprint(item["Name"], ":", item["CInstanceId"])
116+
if len(idsMap) > 0 {
117+
if _, ok := idsMap[id]; !ok {
118+
continue
119+
}
120+
}
121+
objects = append(objects, item)
122+
}
123+
124+
ids := make([]string, 0)
125+
s := make([]map[string]interface{}, 0)
126+
for _, objectRaw := range objects {
127+
mapping := map[string]interface{}{}
128+
129+
mapping["id"] = fmt.Sprint(objectRaw["Name"], ":", objectRaw["CInstanceId"])
130+
131+
mapping["password"] = objectRaw["PasswordHash"]
132+
mapping["instance_id"] = objectRaw["CInstanceId"]
133+
mapping["user_name"] = objectRaw["Name"]
134+
mapping["description"] = amqpOpenSourceAccountDescription(objectRaw)
135+
136+
ids = append(ids, fmt.Sprint(mapping["id"]))
137+
s = append(s, mapping)
138+
}
139+
140+
d.SetId(dataResourceIdHash(ids))
141+
if err := d.Set("ids", ids); err != nil {
142+
return WrapError(err)
143+
}
144+
145+
if err := d.Set("accounts", s); err != nil {
146+
return WrapError(err)
147+
}
148+
149+
if output, ok := d.GetOk("output_file"); ok && output.(string) != "" {
150+
writeToFile(output.(string), s)
151+
}
152+
return nil
153+
}
Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
// Package alicloud. This file is generated automatically. Please do not modify it manually, thank you!
2+
package alicloud
3+
4+
import (
5+
"fmt"
6+
"strings"
7+
"testing"
8+
9+
"github.com/aliyun/terraform-provider-alicloud/alicloud/connectivity"
10+
"github.com/hashicorp/terraform-plugin-sdk/helper/acctest"
11+
)
12+
13+
func TestAccAlicloudAmqpOpenSourceAccountDataSource(t *testing.T) {
14+
testAccPreCheckWithRegions(t, true, []connectivity.Region{"cn-hangzhou"})
15+
rand := acctest.RandIntRange(1000000, 9999999)
16+
17+
idsConf := dataSourceTestAccConfig{
18+
existConfig: testAccCheckAlicloudAmqpOpenSourceAccountSourceConfig(rand, map[string]string{
19+
"ids": `["${alicloud_amqp_open_source_account.default.id}"]`,
20+
"instance_id": `"${alicloud_amqp_instance.CreateInstance.id}"`,
21+
}),
22+
fakeConfig: testAccCheckAlicloudAmqpOpenSourceAccountSourceConfig(rand, map[string]string{
23+
"ids": `["${alicloud_amqp_open_source_account.default.id}_fake"]`,
24+
"instance_id": `"${alicloud_amqp_instance.CreateInstance.id}"`,
25+
}),
26+
}
27+
28+
outputFileConf := dataSourceTestAccConfig{
29+
existConfig: testAccCheckAlicloudAmqpOpenSourceAccountSourceConfig(rand, map[string]string{
30+
"ids": `["${alicloud_amqp_open_source_account.default.id}"]`,
31+
"instance_id": `"${alicloud_amqp_instance.CreateInstance.id}"`,
32+
"output_file": `"./tf-testacc-amqp-open-source-accounts.txt"`,
33+
}),
34+
fakeConfig: testAccCheckAlicloudAmqpOpenSourceAccountSourceConfig(rand, map[string]string{
35+
"ids": `["${alicloud_amqp_open_source_account.default.id}_fake"]`,
36+
"instance_id": `"${alicloud_amqp_instance.CreateInstance.id}"`,
37+
"output_file": `"./tf-testacc-amqp-open-source-accounts-fake.txt"`,
38+
}),
39+
}
40+
41+
AmqpOpenSourceAccountCheckInfo.dataSourceTestCheck(t, rand, idsConf, outputFileConf)
42+
}
43+
44+
var existAmqpOpenSourceAccountMapFunc = func(rand int) map[string]string {
45+
return map[string]string{
46+
"accounts.#": "1",
47+
"accounts.0.user_name": CHECKSET,
48+
"accounts.0.description": CHECKSET,
49+
"accounts.0.instance_id": CHECKSET,
50+
"accounts.0.password": CHECKSET,
51+
}
52+
}
53+
54+
var fakeAmqpOpenSourceAccountMapFunc = func(rand int) map[string]string {
55+
return map[string]string{
56+
"accounts.#": "0",
57+
}
58+
}
59+
60+
var AmqpOpenSourceAccountCheckInfo = dataSourceAttr{
61+
resourceId: "data.alicloud_amqp_open_source_accounts.default",
62+
existMapFunc: existAmqpOpenSourceAccountMapFunc,
63+
fakeMapFunc: fakeAmqpOpenSourceAccountMapFunc,
64+
}
65+
66+
func testAccCheckAlicloudAmqpOpenSourceAccountSourceConfig(rand int, attrMap map[string]string) string {
67+
var pairs []string
68+
for k, v := range attrMap {
69+
pairs = append(pairs, k+" = "+v)
70+
}
71+
config := fmt.Sprintf(`
72+
variable "name" {
73+
default = "tf-testAccAmqpOpenSourceAccount%d"
74+
}
75+
variable "instance_name" {
76+
default = "测试开源鉴权实例"
77+
}
78+
79+
variable "user_name" {
80+
default = "Suhao123_"
81+
}
82+
83+
variable "user_name_update" {
84+
default = "Suhao456_"
85+
}
86+
87+
resource "alicloud_amqp_instance" "CreateInstance" {
88+
renewal_duration = "1"
89+
max_tps = "3000"
90+
period_cycle = "Month"
91+
max_connections = "2000"
92+
support_eip = true
93+
auto_renew = false
94+
renewal_status = "AutoRenewal"
95+
period = "12"
96+
instance_name = var.instance_name
97+
support_tracing = false
98+
payment_type = "Subscription"
99+
renewal_duration_unit = "Month"
100+
instance_type = "enterprise"
101+
queue_capacity = "200"
102+
max_eip_tps = "128"
103+
vpc_id = alicloud_vpc.default.id
104+
vswitch_ids = [alicloud_vswitch.default_b.id, alicloud_vswitch.default_g.id]
105+
security_group_id = alicloud_security_group.default.id
106+
}
107+
108+
resource "alicloud_vpc" "default" {
109+
vpc_name = var.name
110+
cidr_block = "172.16.0.0/16"
111+
}
112+
113+
resource "alicloud_vswitch" "default_b" {
114+
vswitch_name = "${var.name}-b"
115+
cidr_block = "172.16.0.0/24"
116+
vpc_id = alicloud_vpc.default.id
117+
zone_id = "cn-hangzhou-b"
118+
}
119+
120+
resource "alicloud_vswitch" "default_g" {
121+
vswitch_name = "${var.name}-g"
122+
cidr_block = "172.16.1.0/24"
123+
vpc_id = alicloud_vpc.default.id
124+
zone_id = "cn-hangzhou-g"
125+
}
126+
127+
resource "alicloud_security_group" "default" {
128+
security_group_name = var.name
129+
vpc_id = alicloud_vpc.default.id
130+
}
131+
132+
133+
resource "alicloud_amqp_open_source_account" "default" {
134+
user_name = var.user_name
135+
description = var.user_name
136+
password = var.user_name
137+
instance_id = alicloud_amqp_instance.CreateInstance.id
138+
}
139+
140+
data "alicloud_amqp_open_source_accounts" "default" {
141+
%s
142+
}
143+
`, rand, strings.Join(pairs, "\n "))
144+
return config
145+
}

alicloud/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ func Provider() terraform.ResourceProvider {
171171
},
172172
},
173173
DataSourcesMap: map[string]*schema.Resource{
174+
"alicloud_amqp_open_source_accounts": dataSourceAliCloudAmqpOpenSourceAccounts(),
174175
"alicloud_amqp_open_source_permissions": dataSourceAliCloudAmqpOpenSourcePermissions(),
175176
"alicloud_vpn_gateway_enhanced_vpn_gateways": dataSourceAliCloudVpnGatewayEnhancedVpnGateways(),
176177
"alicloud_cdn_domain_configs": dataSourceAliCloudCdnDomainConfigs(),
@@ -922,6 +923,7 @@ func Provider() terraform.ResourceProvider {
922923
"alicloud_vpc_ipam_ipams": dataSourceAliCloudVpcIpamIpams(),
923924
},
924925
ResourcesMap: map[string]*schema.Resource{
926+
"alicloud_amqp_open_source_account": resourceAliCloudAmqpOpenSourceAccount(),
925927
"alicloud_amqp_open_source_permission": resourceAliCloudAmqpOpenSourcePermission(),
926928
"alicloud_vpn_gateway_enhanced_vpn_gateway": resourceAliCloudVpnGatewayEnhancedVpnGateway(),
927929
"alicloud_oss_bucket_object_worm_configuration": resourceAliCloudOssBucketObjectWormConfiguration(),

0 commit comments

Comments
 (0)