-
Notifications
You must be signed in to change notification settings - Fork 48
/
private_mode_lb.go
109 lines (94 loc) · 3.46 KB
/
private_mode_lb.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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package goaviatrix
import (
"context"
"fmt"
"strings"
)
type PrivateModeLb struct {
CID string `json:"CID"`
Action string `json:"action"`
AccountName string `json:"account_name"`
VpcId string `json:"vpc_id"`
Region string `json:"region"`
LbType string `json:"lb_type"`
MulticloudAccessVpcId string `json:"endpoint_vpc_id,omitempty"`
EdgeVpc bool `json:"edge_vpc,omitempty"`
Proxies []PrivateModeMulticloudProxy
}
type PrivateModeLbRead struct {
AccountName string `json:"account_name"`
VpcId string `json:"vpc_id"`
Region string `json:"region"`
LbType string `json:"lb_type"`
MulticloudAccessVpcId string `json:"multicloud_access_vpc_id,omitempty"`
EdgeVpc bool `json:"edge_vpc,omitempty"`
Proxies []PrivateModeMulticloudProxy
}
type PrivateModeMulticloudProxy struct {
InstanceId string `json:"instance_id"`
VpcId string `json:"vpc_id"`
}
func privateModeLoadBalancerCheckFunc(action, method, reason string, ret bool) error {
if !ret {
if strings.Contains(reason, "Private Mode is not enabled") || strings.Contains(reason, "There is no Load Balancer in VPC") {
return ErrNotFound
}
return fmt.Errorf("rest API %s %s failed: %s", action, method, reason)
}
return nil
}
func (c *Client) CreatePrivateModeControllerLoadBalancer(ctx context.Context, privateModeLb *PrivateModeLb) error {
privateModeLb.CID = c.CID
privateModeLb.Action = "create_private_mode_controller_load_balancer"
return c.PostAPIContext2(ctx, nil, privateModeLb.Action, privateModeLb, BasicCheck)
}
func (c *Client) CreatePrivateModeMulticloudLoadBalancer(ctx context.Context, privateModeLb *PrivateModeLb) error {
privateModeLb.CID = c.CID
privateModeLb.Action = "create_private_mode_multicloud_load_balancer"
return c.PostAPIContext2(ctx, nil, privateModeLb.Action, privateModeLb, BasicCheck)
}
func (c *Client) UpdatePrivateModeMulticloudProxies(ctx context.Context, privateModeLb *PrivateModeLb) error {
action := "update_private_mode_multicloud_proxies"
form := map[string]interface{}{
"CID": c.CID,
"action": action,
"lb_vpc_id": privateModeLb.VpcId,
"account_name": privateModeLb.AccountName,
}
if len(privateModeLb.Proxies) != 0 {
form["instance_info"] = map[string]interface{}{
"instances": privateModeLb.Proxies,
}
} else {
form["instance_info"] = map[string]interface{}{
"instances": []string{},
}
}
return c.PostAPIContext2(ctx, nil, action, form, BasicCheck)
}
func (c *Client) GetPrivateModeLoadBalancer(ctx context.Context, loadBalancerVpcId string) (*PrivateModeLbRead, error) {
action := "get_private_mode_load_balancer_detail"
form := map[string]string{
"CID": c.CID,
"action": action,
"load_balancer_vpc_id": loadBalancerVpcId,
}
type PrivateModeLoadBalancerResp struct {
Results PrivateModeLbRead
}
var resp PrivateModeLoadBalancerResp
err := c.PostAPIContext2(ctx, &resp, action, form, privateModeLoadBalancerCheckFunc)
if err != nil {
return nil, err
}
return &resp.Results, nil
}
func (c *Client) DeletePrivateModeLoadBalancer(ctx context.Context, loadBalancerVpcId string) error {
action := "delete_private_mode_load_balancer"
form := map[string]string{
"CID": c.CID,
"action": action,
"vpc_id": loadBalancerVpcId,
}
return c.PostAPIContext2(ctx, nil, action, form, BasicCheck)
}