@@ -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 }
6879done:
0 commit comments