forked from hashicorp/terraform-provider-jdcloud
/
routeTable.go
65 lines (53 loc) · 1.78 KB
/
routeTable.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package main
import (
"fmt"
"github.com/jdcloud-api/jdcloud-sdk-go/services/vpc/apis"
"github.com/jdcloud-api/jdcloud-sdk-go/services/vpc/client"
)
const routeTableTemplate = `
resource "jdcloud_route_table" "%s" {
vpc_id = "${jdcloud_vpc.%s.id}"
route_table_name = "%s"
description = "%s"
}
`
const rtRuleTemplate = `
resource "jdcloud_route_table_rule" "%s" {
route_table_id = "${jdcloud_route_table.%s.id}"
address_prefix = "%s"
next_hop_id = "%s"
next_hop_type = "%s"
priority = "%d"
}
`
const rtAssociation = `
resource "jdcloud_route_table_association" "%s" {
subnet_id = "${jdcloud_subnet.%s.id}"
route_table_id = "${jdcloud_route_table.%s.id}"
}
`
func copyRouteTable() {
vpcClient := client.NewVpcClient(config.Credential)
req := apis.NewDescribeRouteTablesRequest(region)
resp, _ := vpcClient.DescribeRouteTables(req)
for count, rt := range resp.Result.RouteTables {
// RouteTable - Copying
resourceName := fmt.Sprintf("route-table-%d", count)
rtResource := fmt.Sprintf(routeTableTemplate, resourceName, resourceMap[rt.VpcId], rt.RouteTableName, rt.Description)
tracefile(rtResource)
resourceMap[rt.RouteTableId] = resourceName
// RouteTableRules - Copying
for ruleIndex, rule := range rt.RouteTableRules {
ruleName := fmt.Sprintf("routetablerule-%d", ruleIndex)
ruleResource := fmt.Sprintf(rtRuleTemplate, ruleName, resourceName, rule.AddressPrefix, rule.NextHopId, rule.NextHopType, rule.Priority)
tracefile(ruleResource)
resourceMap[rule.RuleId] = ruleName
}
// RouteTableAssociation - Copying
for asIndex, as := range rt.SubnetIds {
associationName := fmt.Sprintf("route-table-association-%d", asIndex)
asscoResource := fmt.Sprintf(rtAssociation, associationName, resourceMap[as], resourceName)
tracefile(asscoResource)
}
}
}