depaginate aws roles data

This commit is contained in:
Nancy Butler 2023-01-03 12:50:34 -07:00
parent d3ecf2a5d5
commit be38c1ac79
1 changed files with 22 additions and 8 deletions

View File

@ -604,7 +604,7 @@ export default Component.extend(ClusterDriver, {
auth.endpoint = `iam.cn-north-1.amazonaws.com.cn` auth.endpoint = `iam.cn-north-1.amazonaws.com.cn`
} }
const awsRoles = await this.describeResource(['IAM', 'listRoles', 'Roles'], {}, auth); const awsRoles = await this.describeResource(['IAM', 'listRoles', 'Roles'], { MaxItems: 1000 }, auth);
const eksRoles = []; const eksRoles = [];
const ec2Roles = [] const ec2Roles = []
@ -790,14 +790,28 @@ export default Component.extend(ClusterDriver, {
const [awsClassName, awsSDKMethod, responseKey] = apiDescription; const [awsClassName, awsSDKMethod, responseKey] = apiDescription;
const klass = new AWS[awsClassName](authCreds); const klass = new AWS[awsClassName](authCreds);
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
const fetchData = (params, allResponseData = []) => {
klass[awsSDKMethod](params, (err, data) => { klass[awsSDKMethod](params, (err, data) => {
if (err) { if (err){
return reject(err); return reject(err)
}
allResponseData.push(...data[responseKey])
if (data.IsTruncated && data.Marker){
fetchData({
...params,
Marker: data.Marker
}, allResponseData)
} else {
resolve(allResponseData)
}
})
} }
return resolve(data[responseKey]); fetchData(params, [])
})
}) })
} }
}); });