Skip to content

Commit 902e207

Browse files
authored
Merge pull request #53 from lixiaojun629/develop
add command 'ucloud api' & adapt to cloudshell
2 parents a59159f + 1d546d7 commit 902e207

151 files changed

Lines changed: 9123 additions & 6988 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export VERSION=0.1.32
1+
export VERSION=0.1.33
22

33
.PHONY : install
44
install:

README-CN.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,3 +216,39 @@ gssh[uga-0psxxx] created
216216
$ ssh root@152.32.140.92.ipssh.net
217217
root@152.32.140.92.ipssh.net's password: password of the uhost instance
218218
```
219+
220+
使用"ucloud api"命令调用任意API,根据API文档把某个API的参数依次填入。此命令比较特殊,不支持--public-key,--private-key,--debug,--profile,--timeout-sec等公共参数,如果要开启debug模式,可以设置环境变量$UCLOUD_CLI_DEBUG=on
221+
222+
```
223+
$ ucloud api --Action <APIName> --Param1 <value> --Param2 <value> ...
224+
```
225+
或者把API参数写到JSON文件中,举例如下
226+
```
227+
$ ucloud api --local-file ./create_uhost.json
228+
229+
//create_uhost.json文件内容
230+
{
231+
"Action":"CreateUHostInstance",
232+
"Region":"cn-bj2",
233+
"Zone":"cn-bj2-02",
234+
"ImageId":"uimage-gk2x3x",
235+
"NetworkInterface": [{
236+
"EIP":{
237+
"Bandwidth":1,
238+
"OperatorName":"Bgp",
239+
"PayMode": "Bandwidth"
240+
}
241+
}],
242+
"LoginMode":"Password",
243+
"Password":"dGVzdGx4ajEy",
244+
"CPU":1,
245+
"Memory":2048,
246+
"Disks":[
247+
{
248+
"Size":20,
249+
"Type":"LOCAL_NORMAL",
250+
"IsBoot":"true"
251+
}
252+
]
253+
}
254+
```

README.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,3 +225,39 @@ gssh[uga-0psxxx] created
225225
$ ssh root@152.32.140.92.ipssh.net
226226
root@152.32.140.92.ipssh.net's password: password of the uhost instance
227227
```
228+
229+
Using command "ucloud api" to call any API.Fill in the parameters of an API in sequence according to the API documentation. This command is quite special, and public parameters such as --public-key,--private-key,--debug,--profile,--timeout-sec are not supported. If you want to tune on debug mode, set environment variable $UCLOUD_CLI_DEBUG=on
230+
231+
```
232+
$ ucloud api --Action <APIName> --Param1 <value> --Param2 <value> ...
233+
```
234+
You can also put those API parameters into a json file, like this.
235+
```
236+
$ ucloud api --local-file ./create_uhost.json
237+
238+
//content of file create_uhost.json
239+
{
240+
"Action":"CreateUHostInstance",
241+
"Region":"cn-bj2",
242+
"Zone":"cn-bj2-02",
243+
"ImageId":"uimage-gk2x3x",
244+
"NetworkInterface": [{
245+
"EIP":{
246+
"Bandwidth":1,
247+
"OperatorName":"Bgp",
248+
"PayMode": "Bandwidth"
249+
}
250+
}],
251+
"LoginMode":"Password",
252+
"Password":"dGVzdGx4ajEy",
253+
"CPU":1,
254+
"Memory":2048,
255+
"Disks":[
256+
{
257+
"Size":20,
258+
"Type":"LOCAL_NORMAL",
259+
"IsBoot":"true"
260+
}
261+
]
262+
}
263+
```

base/client.go

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package base
22

33
import (
4+
"github.com/ucloud/ucloud-sdk-go/private/protocol/http"
45
ppathx "github.com/ucloud/ucloud-sdk-go/private/services/pathx"
56
pudb "github.com/ucloud/ucloud-sdk-go/private/services/udb"
67
puhost "github.com/ucloud/ucloud-sdk-go/private/services/uhost"
@@ -53,11 +54,26 @@ type Client struct {
5354
}
5455

5556
// NewClient will return a aggregate client
56-
func NewClient(config *sdk.Config, credential *auth.Credential) *Client {
57+
func NewClient(config *sdk.Config, credConfig *CredentialConfig) *Client {
5758
var handler sdk.RequestHandler = func(c *sdk.Client, req request.Common) (request.Common, error) {
5859
err := req.SetProjectId(PickResourceID(req.GetProjectId()))
5960
return req, err
6061
}
62+
var injectCredHeader sdk.HttpRequestHandler = func(c *sdk.Client, req *http.HttpRequest) (*http.HttpRequest, error) {
63+
err := req.SetHeader("Cookie", credConfig.Cookie)
64+
if err != nil {
65+
return req, err
66+
}
67+
err = req.SetHeader("Csrf-Token", credConfig.CSRFToken)
68+
if err != nil {
69+
return req, err
70+
}
71+
return req, err
72+
}
73+
credential := &auth.Credential{
74+
PublicKey: credConfig.PublicKey,
75+
PrivateKey: credConfig.PrivateKey,
76+
}
6177
var (
6278
uaccountClient = *uaccount.NewClient(config, credential)
6379
uhostClient = *uhost.NewClient(config, credential)
@@ -77,20 +93,49 @@ func NewClient(config *sdk.Config, credential *auth.Credential) *Client {
7793
)
7894

7995
uaccountClient.Client.AddRequestHandler(handler)
96+
uaccountClient.Client.AddHttpRequestHandler(injectCredHeader)
97+
8098
uhostClient.Client.AddRequestHandler(handler)
99+
uhostClient.Client.AddHttpRequestHandler(injectCredHeader)
100+
81101
unetClient.Client.AddRequestHandler(handler)
102+
unetClient.Client.AddHttpRequestHandler(injectCredHeader)
103+
82104
vpcClient.Client.AddRequestHandler(handler)
105+
vpcClient.Client.AddHttpRequestHandler(injectCredHeader)
106+
83107
udpnClient.Client.AddRequestHandler(handler)
108+
udpnClient.Client.AddHttpRequestHandler(injectCredHeader)
109+
84110
pathxClient.Client.AddRequestHandler(handler)
111+
pathxClient.Client.AddHttpRequestHandler(injectCredHeader)
112+
85113
udiskClient.Client.AddRequestHandler(handler)
114+
udiskClient.Client.AddHttpRequestHandler(injectCredHeader)
115+
86116
ulbClient.Client.AddRequestHandler(handler)
117+
ulbClient.Client.AddHttpRequestHandler(injectCredHeader)
118+
87119
udbClient.Client.AddRequestHandler(handler)
120+
udbClient.Client.AddHttpRequestHandler(injectCredHeader)
121+
88122
umemClient.Client.AddRequestHandler(handler)
123+
umemClient.Client.AddHttpRequestHandler(injectCredHeader)
124+
89125
uphostClient.Client.AddRequestHandler(handler)
126+
uphostClient.Client.AddHttpRequestHandler(injectCredHeader)
127+
90128
puhostClient.Client.AddRequestHandler(handler)
129+
puhostClient.Client.AddHttpRequestHandler(injectCredHeader)
130+
91131
pudbClient.Client.AddRequestHandler(handler)
132+
pudbClient.Client.AddHttpRequestHandler(injectCredHeader)
133+
92134
pumemClient.Client.AddRequestHandler(handler)
135+
pumemClient.Client.AddHttpRequestHandler(injectCredHeader)
136+
93137
ppathxClient.Client.AddRequestHandler(handler)
138+
ppathxClient.Client.AddHttpRequestHandler(injectCredHeader)
94139

95140
return &Client{
96141
uaccountClient,

0 commit comments

Comments
 (0)