@@ -17,7 +17,9 @@ package ram
1717
1818import (
1919 "context"
20- "github.com/aliyun/alibaba-cloud-sdk-go/services/ram"
20+
21+ ram20150501 "github.com/alibabacloud-go/ram-20150501/v2/client"
22+ "github.com/alibabacloud-go/tea/tea"
2123 "github.com/cloudrec/alicloud/collector"
2224 "github.com/core-sdk/constant"
2325 "github.com/core-sdk/log"
@@ -41,82 +43,91 @@ func GetRAMRoleResource() schema.Resource {
4143}
4244
4345type RoleDetail struct {
44- Role ram. Role
46+ Role * ram20150501. GetRoleResponseBodyRole
4547 Policies []PolicyDetail
4648}
4749
4850func GetRoleDetail (ctx context.Context , service schema.ServiceInterface , res chan <- any ) error {
4951 cli := service .(* collector.Services ).RAM
5052
51- request := ram .CreateListRolesRequest ()
52- request .Scheme = "https"
53+ request := & ram20150501.ListRolesRequest {}
5354
5455 for {
55- response , err := cli .ListRoles (request )
56+ response , err := cli .ListRolesWithOptions (request , collector . RuntimeObject )
5657 if err != nil {
5758 log .CtxLogger (ctx ).Warn ("ListRoles error" , zap .Error (err ))
5859 return err
5960 }
60- for _ , role := range response .Roles .Role {
61- d := RoleDetail {
62- Role : getRole (ctx , cli , role .RoleName ),
63- Policies : listPoliciesForRole (ctx , cli , role .RoleName ),
61+ if response .Body .Roles != nil && response .Body .Roles .Role != nil {
62+ for _ , role := range response .Body .Roles .Role {
63+ if role .RoleName != nil {
64+ d := RoleDetail {
65+ Role : getRole (ctx , cli , * role .RoleName ),
66+ Policies : listPoliciesForRole (ctx , cli , * role .RoleName ),
67+ }
68+ res <- d
69+ }
6470 }
65-
66- res <- d
6771 }
68- if ! response .IsTruncated {
72+ if response . Body . IsTruncated == nil || ! * response . Body .IsTruncated {
6973 break
7074 }
71- request .Marker = response .Marker
75+ if response .Body .Marker != nil {
76+ request .Marker = response .Body .Marker
77+ }
7278 }
7379
7480 return nil
7581}
7682
77- func getRole (ctx context.Context , cli * ram .Client , name string ) ram. Role {
78- request := ram . CreateGetRoleRequest ()
79- request . RoleName = name
80- request . Scheme = "https"
81- getRoleResponse , err := cli .GetRole (request )
83+ func getRole (ctx context.Context , cli * ram20150501 .Client , name string ) * ram20150501. GetRoleResponseBodyRole {
84+ request := & ram20150501. GetRoleRequest {
85+ RoleName : tea . String ( name ),
86+ }
87+ getRoleResponse , err := cli .GetRoleWithOptions (request , collector . RuntimeObject )
8288 if err != nil {
8389 log .CtxLogger (ctx ).Warn ("GetRole error" , zap .Error (err ))
84- return ram. Role {}
90+ return nil
8591 }
86- return getRoleResponse .Role
92+ return getRoleResponse .Body . Role
8793}
8894
89- func listPoliciesForRole (ctx context.Context , cli * ram .Client , name string ) (policies []PolicyDetail ) {
90- request := ram . CreateListPoliciesForRoleRequest ()
91- request . Scheme = "https"
92- request . RoleName = name
93- response , err := cli .ListPoliciesForRole (request )
95+ func listPoliciesForRole (ctx context.Context , cli * ram20150501 .Client , name string ) (policies []PolicyDetail ) {
96+ request := & ram20150501. ListPoliciesForRoleRequest {
97+ RoleName : tea . String ( name ),
98+ }
99+ response , err := cli .ListPoliciesForRoleWithOptions (request , collector . RuntimeObject )
94100 if err != nil {
95101 log .CtxLogger (ctx ).Warn ("ListPoliciesForRole error" , zap .Error (err ))
96102 return nil
97103 }
98104
99- return getPolicyDetails (ctx , cli , response .Policies .Policy , "Role:" + name )
105+ if response .Body .Policies != nil && response .Body .Policies .Policy != nil {
106+ return getPolicyDetails (ctx , cli , response .Body .Policies .Policy , "Role:" + name )
107+ }
108+ return nil
100109}
101110
102- func getPolicyDetails (ctx context.Context , cli * ram .Client , policy []ram. Policy , source string ) (policies []PolicyDetail ) {
111+ func getPolicyDetails (ctx context.Context , cli * ram20150501 .Client , policy []* ram20150501. ListPoliciesForRoleResponseBodyPoliciesPolicy , source string ) (policies []PolicyDetail ) {
103112
104113 for i := 0 ; i < len (policy ); i ++ {
105- r := ram .CreateGetPolicyRequest ()
106- r .Scheme = "https"
107- r .PolicyName = policy [i ].PolicyName
108- r .PolicyType = policy [i ].PolicyType
109- resp , err := cli .GetPolicy (r )
110- if err != nil {
111- log .CtxLogger (ctx ).Warn ("GetPolicy error" , zap .Error (err ))
112- continue
113- }
114- p := PolicyDetail {
115- Policy : resp .Policy ,
116- DefaultPolicyVersion : resp .DefaultPolicyVersion ,
117- Source : source ,
114+ if policy [i ].PolicyName != nil && policy [i ].PolicyType != nil {
115+ r := & ram20150501.GetPolicyRequest {
116+ PolicyName : policy [i ].PolicyName ,
117+ PolicyType : policy [i ].PolicyType ,
118+ }
119+ resp , err := cli .GetPolicyWithOptions (r , collector .RuntimeObject )
120+ if err != nil {
121+ log .CtxLogger (ctx ).Warn ("GetPolicy error" , zap .Error (err ))
122+ continue
123+ }
124+ p := PolicyDetail {
125+ Policy : resp .Body .Policy ,
126+ DefaultPolicyVersion : resp .Body .DefaultPolicyVersion ,
127+ Source : source ,
128+ }
129+ policies = append (policies , p )
118130 }
119- policies = append (policies , p )
120131 }
121132
122133 return policies
0 commit comments