Skip to content

Commit 71cc12d

Browse files
committed
fix(huawei):ECS query automatic page turning
1 parent 869c8e7 commit 71cc12d

File tree

1 file changed

+34
-23
lines changed

1 file changed

+34
-23
lines changed

pkg/providers/huawei/ecs/instances.go

Lines changed: 34 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -30,39 +30,50 @@ func (d *Driver) GetResource(ctx context.Context) ([]schema.Host, error) {
3030
continue
3131
}
3232

33-
request := &model.ListServersDetailsRequest{}
34-
response, err := client.ListServersDetails(request)
35-
if err != nil {
36-
continue
37-
}
33+
count := 0
34+
limitRequest := int32(100)
35+
page := int32(1)
36+
request := &model.ListServersDetailsRequest{Limit: &limitRequest}
37+
for {
38+
request.Offset = &page
39+
response, err := client.ListServersDetails(request)
40+
if err != nil {
41+
break
42+
}
3843

39-
for _, instance := range *response.Servers {
40-
var ipv4, privateIPv4 string
41-
for _, instance := range instance.Addresses {
42-
for _, addr := range instance {
43-
if *addr.OSEXTIPStype == model.GetServerAddressOSEXTIPStypeEnum().FIXED {
44-
privateIPv4 = addr.Addr
45-
}
46-
if *addr.OSEXTIPStype == model.GetServerAddressOSEXTIPStypeEnum().FLOATING {
47-
ipv4 = addr.Addr
44+
for _, instance := range *response.Servers {
45+
var ipv4, privateIPv4 string
46+
for _, instance := range instance.Addresses {
47+
for _, addr := range instance {
48+
if *addr.OSEXTIPStype == model.GetServerAddressOSEXTIPStypeEnum().FIXED {
49+
privateIPv4 = addr.Addr
50+
}
51+
if *addr.OSEXTIPStype == model.GetServerAddressOSEXTIPStypeEnum().FLOATING {
52+
ipv4 = addr.Addr
53+
}
4854
}
4955
}
56+
host := schema.Host{
57+
State: instance.Status,
58+
HostName: instance.Name,
59+
PublicIPv4: ipv4,
60+
PrivateIpv4: privateIPv4,
61+
Public: ipv4 != "",
62+
Region: r,
63+
}
64+
list = append(list, host)
5065
}
51-
host := schema.Host{
52-
State: instance.Status,
53-
HostName: instance.Name,
54-
PublicIPv4: ipv4,
55-
PrivateIpv4: privateIPv4,
56-
Public: ipv4 != "",
57-
Region: r,
66+
if page*limitRequest >= *response.Count {
67+
count = int(*response.Count)
68+
break
5869
}
59-
list = append(list, host)
70+
page++
6071
}
6172
select {
6273
case <-ctx.Done():
6374
goto done
6475
default:
65-
prevLength, flag = processbar.RegionPrint(r, len(*response.Servers), prevLength, flag)
76+
prevLength, flag = processbar.RegionPrint(r, count, prevLength, flag)
6677
}
6778
}
6879
done:

0 commit comments

Comments
 (0)