From be38c1ac79e57cb156093c65a14a60a10077bad3 Mon Sep 17 00:00:00 2001 From: Nancy Butler <42977925+mantis-toboggan-md@users.noreply.github.com> Date: Tue, 3 Jan 2023 12:50:34 -0700 Subject: [PATCH] depaginate aws roles data --- .../cluster-driver/driver-eks/component.js | 30 ++++++++++++++----- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/lib/shared/addon/components/cluster-driver/driver-eks/component.js b/lib/shared/addon/components/cluster-driver/driver-eks/component.js index 08ebd7674..eec68c704 100644 --- a/lib/shared/addon/components/cluster-driver/driver-eks/component.js +++ b/lib/shared/addon/components/cluster-driver/driver-eks/component.js @@ -604,7 +604,7 @@ export default Component.extend(ClusterDriver, { 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 ec2Roles = [] @@ -790,14 +790,28 @@ export default Component.extend(ClusterDriver, { const [awsClassName, awsSDKMethod, responseKey] = apiDescription; const klass = new AWS[awsClassName](authCreds); - return new Promise((resolve, reject) => { - klass[awsSDKMethod](params, (err, data) => { - if (err) { - return reject(err); - } - return resolve(data[responseKey]); - }) + + return new Promise((resolve, reject) => { + const fetchData = (params, allResponseData = []) => { + klass[awsSDKMethod](params, (err, data) => { + if (err){ + return reject(err) + } + allResponseData.push(...data[responseKey]) + + if (data.IsTruncated && data.Marker){ + fetchData({ + ...params, + Marker: data.Marker + }, allResponseData) + } else { + resolve(allResponseData) + } + }) + } + + fetchData(params, []) }) } });