Skip to content

Commit 5d9cd15

Browse files
authored
Bitbucket Cloud: Fix for getting Deployment Environment Variables via each. (#1195)
1 parent 6180955 commit 5d9cd15

File tree

1 file changed

+28
-16
lines changed

1 file changed

+28
-16
lines changed

atlassian/bitbucket/cloud/repositories/deploymentEnvironments.py

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -159,31 +159,43 @@ def create(self, key, value, secured):
159159
data = {"key": key, "value": value, "secured": secured}
160160
return self.__get_object(self.post(None, data=data))
161161

162-
def each(self, q=None, sort=None):
162+
def each(self, pagelen=10):
163163
"""
164164
Returns the list of deployment environment variables in this repository.
165165
166-
:param q: string: Query string to narrow down the response.
166+
:param pagelen: integer: Query string to return this number of items from api.
167167
See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
168-
:param sort: string: Name of a response property to sort results.
169-
See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
170168
171-
:return: A generator for the DeploymentEnvironmentVariable objects
169+
:return: A list of DeploymentEnvironmentVariable objects
172170
173171
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-pipelines/#api-repositories-workspace-repo-slug-deployments-config-environments-environment-uuid-variables-get
174172
"""
175173
params = {}
176-
if sort is not None:
177-
params["sort"] = sort
178-
if q is not None:
179-
params["q"] = q
180-
for deployment_environment_variable in self._get_paged(
181-
None,
182-
params=params,
183-
):
184-
yield self.__get_object(deployment_environment_variable)
185-
186-
return
174+
params["pagelen"] = pagelen
175+
176+
response = super(BitbucketCloudBase, self).get(None, params=params)
177+
178+
pagelen = response.get("pagelen")
179+
size_total = response.get("size")
180+
pagelen_total = response.get("pagelen")
181+
page = 1
182+
183+
deployment_environment_variables = []
184+
185+
# workaround for this issue
186+
# https://jira.atlassian.com/browse/BCLOUD-20796
187+
while True:
188+
for value in response.get("values", []):
189+
deployment_environment_variables.append(self.__get_object(value))
190+
191+
if pagelen_total < size_total:
192+
pagelen_total = pagelen_total + response["pagelen"]
193+
page = page + 1
194+
response = super(BitbucketCloudBase, self).get(None, params={"pagelen": pagelen, "page": page})
195+
else:
196+
break
197+
198+
return deployment_environment_variables
187199

188200

189201
class DeploymentEnvironmentVariable(BitbucketCloudBase):

0 commit comments

Comments
 (0)