Skip to content

Commit 961cd81

Browse files
committed
Bitbucket: Adding getting deployment environment variables.
1 parent adb6ac0 commit 961cd81

File tree

1 file changed

+85
-0
lines changed

1 file changed

+85
-0
lines changed

atlassian/bitbucket/cloud/repositories/deploymentEnvironments.py

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
from ..base import BitbucketCloudBase
44

5+
from urllib.parse import urlunsplit, urlsplit
6+
57

68
class DeploymentEnvironments(BitbucketCloudBase):
79
def __init__(self, url, *args, **kwargs):
@@ -58,6 +60,10 @@ def __init__(self, url, data, *args, **kwargs):
5860
super(DeploymentEnvironment, self).__init__(
5961
url, *args, data=data, expected_type="deployment_environment", **kwargs
6062
)
63+
deployment_environment_url = self.get_deployment_environment_variable_url(self.url)
64+
self.__deployment_environment_variables = DeploymentEnvironmentVariables(
65+
"{}/variables".format(deployment_environment_url), **self._new_session_args
66+
)
6167

6268
@property
6369
def uuid(self):
@@ -118,3 +124,82 @@ def slug(self):
118124
def type(self):
119125
"""The deployment environment type"""
120126
return self.get_data("type")
127+
128+
@property
129+
def deployment_environment_variables(self):
130+
"""The deployment environment variables"""
131+
return self.__deployment_environment_variables
132+
133+
def get_deployment_environment_variable_url(self, url):
134+
parsed_url = urlsplit(url)
135+
path = parsed_url.path.split("/environments/")
136+
new_path = f"{path[0]}/deployments_config/environments/{path[1]}"
137+
list_parsed_url = list(parsed_url[:])
138+
list_parsed_url[2] = new_path
139+
return urlunsplit(tuple(list_parsed_url))
140+
141+
142+
class DeploymentEnvironmentVariables(BitbucketCloudBase):
143+
def __init__(self, url, *args, **kwargs):
144+
super(DeploymentEnvironmentVariables, self).__init__(url, *args, **kwargs)
145+
146+
def __get_object(self, data):
147+
return DeploymentEnvironmentVariable(
148+
# self.url_joiner(super().get_deployment_environment_variable_url(), data["uuid"]),
149+
self.url,
150+
data,
151+
**self._new_session_args,
152+
)
153+
154+
def each(self, q=None, sort=None):
155+
"""
156+
Returns the list of deployment environment variables in this repository.
157+
158+
:param q: string: Query string to narrow down the response.
159+
See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
160+
:param sort: string: Name of a response property to sort results.
161+
See https://developer.atlassian.com/bitbucket/api/2/reference/meta/filtering for details.
162+
163+
:return: A generator for the DeploymentEnvironmentVariable objects
164+
165+
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-pipelines/#api-repositories-workspace-repo-slug-deployments-config-environments-environment-uuid-variables-get
166+
"""
167+
params = {}
168+
if sort is not None:
169+
params["sort"] = sort
170+
if q is not None:
171+
params["q"] = q
172+
for deployment_environment_variable in self._get_paged(
173+
None,
174+
params=params,
175+
):
176+
yield self.__get_object(deployment_environment_variable)
177+
178+
return
179+
180+
181+
class DeploymentEnvironmentVariable(BitbucketCloudBase):
182+
def __init__(self, url, data, *args, **kwargs):
183+
super(DeploymentEnvironmentVariable, self).__init__(
184+
url, *args, data=data, expected_type="pipeline_variable", **kwargs
185+
)
186+
187+
@property
188+
def uuid(self):
189+
"""The deployment environment uuid"""
190+
return self.get_data("uuid")
191+
192+
@property
193+
def secured(self):
194+
"""The deployment environment secured"""
195+
return self.get_data("secured")
196+
197+
@property
198+
def type(self):
199+
"""The deployment environment deployment gate enabled"""
200+
return self.get_data("type")
201+
202+
@property
203+
def value(self):
204+
"""The deployment environment environment lock enabled"""
205+
return self.get_data("value")

0 commit comments

Comments
 (0)