forked from huaweicloud/huaweicloud-sdk-go
-
Notifications
You must be signed in to change notification settings - Fork 0
/
endpoint_override.go
120 lines (109 loc) · 4.37 KB
/
endpoint_override.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
110
111
112
113
114
115
116
117
118
119
120
package examples
import (
"fmt"
"os"
"github.com/YoungPioneers/huaweicloud-sdk-go"
"github.com/YoungPioneers/huaweicloud-sdk-go/openstack"
//"github.com/YoungPioneers/huaweicloud-sdk-go/auth/aksk"
"github.com/YoungPioneers/huaweicloud-sdk-go/auth/token"
"github.com/YoungPioneers/huaweicloud-sdk-go/openstack/compute/v2/servers"
)
// function setenv ,list override examples as below
func setenv() {
os.Setenv("SDK_COMPUTE_ENDPOINT_OVERRIDE", "https://ecs.%(region)s.%(domain)s/v2/%(projectID)s/")
os.Setenv("SDK_ECSV1.1_ENDPOINT_OVERRIDE", "https://ecs.%(region)s.%(domain)s/v1.1/%(projectID)s/")
os.Setenv("SDK_ECSV2_ENDPOINT_OVERRIDE", "https://ecs.%(region)s.%(domain)s/v2/%(projectID)s/")
os.Setenv("SDK_ECS_ENDPOINT_OVERRIDE", "https://ecs.%(region)s.%(domain)s/v1/%(projectID)s/")
os.Setenv("SDK_IMAGE_ENDPOINT_OVERRIDE", "https://ims.%(region)s.%(domain)s/")
os.Setenv("SDK_NETWORK_ENDPOINT_OVERRIDE", "https://vpc.%(region)s.%(domain)s/")
os.Setenv("SDK_VOLUMEV2_ENDPOINT_OVERRIDE", "https://evs.%(region)s.%(domain)s/v2/%(projectID)s/")
os.Setenv("SDK_BSS_ENDPOINT_OVERRIDE", "https://bss.%(region)s.%(domain)s/")
os.Setenv("SDK_IDENTITY_ENDPOINT_OVERRIDE", "https://iam.%(region)s.%(domain)s/")
os.Setenv("SDK_VPC_ENDPOINT_OVERRIDE", "https://vpc.%(region)s.%(domain)s/v1/%(projectID)s/")
os.Setenv("SDK_CESV1_ENDPOINT_OVERRIDE", "https://ces.%(region)s.%(domain)s/V1.0/%(projectID)s/")
os.Setenv("SDK_VPCV2.0_ENDPOINT_OVERRIDE", "https://vpc.%(region)s.%(domain)s/v2.0/%(projectID)s/")
os.Setenv("SDK_ASV1_ENDPOINT_OVERRIDE", "https://as.%(region)s.%(domain)s/autoscaling-api/v1/%(projectID)s/")
os.Setenv("SDK_ASV2_ENDPOINT_OVERRIDE", "https://as.%(region)s.%(domain)s/autoscaling-api/v2/%(projectID)s/")
//os.Setenv("SDK_DNS_ENDPOINT_OVERRIDE", "https://dns.%(region)s.%(domain)s/")
//os.Setenv("SDK_ANTIDDOS_ENDPOINT_OVERRIDE", "https://antiddos.%(region)s.%(domain)s/v1/%(projectID)s/")
//os.Setenv("SDK_ANTIDDOSV2_ENDPOINT_OVERRIDE", "https://antiddos.%(region)s.%(domain)s/v2/%(projectID)s/")
//os.Setenv("SDK_KMSV1_ENDPOINT_OVERRIDE","https://kms.%(region)s.%(domain)s/v1.0/%(projectID)s/ ")
}
/*
func authAKSK() (*gophercloud.ProviderClient, error) {
akskOptions := aksk.AKSKOptions{
IdentityEndpoint: "https://iam.xxx.yyy.com/v3",
ProjectID: "{ProjectID}",
AccessKey: "your AK string",
SecretKey: "your SK string",
Cloud: "yyy.com",
Region: "xxx",
DomainID: "{domainID}",
}
provider, err := openstack.AuthenticatedClient(akskOptions)
if err != nil {
panic(err)
}
return provider, nil
}
*/
func authToken() (*gophercloud.ProviderClient, error) {
tokenOpts := token.TokenOptions{
Username: "your username ",
Password: "your password",
ProjectID: "{ProjectID}",
DomainID: "{domainID}",
IdentityEndpoint: "https://iam.xxx.yyy.com/v3",
}
gophercloud.EnableDebug = true
provider, err := openstack.AuthenticatedClient(tokenOpts)
if err != nil {
fmt.Println("Failed to authenticate:", err)
return nil, err
}
return provider, nil
}
// EndpointOverrideExample shows how to use endpoint override mechanism to customize your service endpoint.
func EndpointOverrideExample() {
fmt.Println("main start...")
provider, err := authToken()
//provider, err := authAKSK()
if err != nil {
fmt.Println("get provider client failed")
if ue, ok := err.(*gophercloud.UnifiedError); ok {
fmt.Println("ErrCode:", ue.ErrorCode())
fmt.Println("Message:", ue.Message())
}
return
}
//set OS environment, mark override format as:SDK_{service_type}_ENDPOINT_OVERRIDE
os.Setenv(
"SDK_COMPUTE_ENDPOINT_OVERRIDE", "https://ecs.xxx.yyy.com/v2/%(projectID)s/")
sc, err := openstack.NewComputeV2(provider, gophercloud.EndpointOpts{})
if err != nil {
fmt.Println("get compute V2 client failed")
if ue, ok := err.(*gophercloud.UnifiedError); ok {
fmt.Println("ErrCode:", ue.ErrorCode())
fmt.Println("Message:", ue.Message())
}
return
}
allPages, err := servers.List(sc, servers.ListOpts{Limit: 5}).AllPages()
if err != nil {
fmt.Println("err:", err)
if ue, ok := err.(*gophercloud.UnifiedError); ok {
fmt.Println("ErrCode:", ue.ErrorCode())
fmt.Println("Message:", ue.Message())
}
return
}
allServers, err := servers.ExtractServers(allPages)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("List Servers:")
for _, s := range allServers {
fmt.Println(s)
}
}