Skip to content

Commit f5f30e1

Browse files
authored
Bitbucket Cloud: Add Create, Update and deleting of deployment environment variables (#1187)
* Bitbucket Cloud: Add Creating deployment environment variables. * Bitbucket Cloud: Add Updating (key or value) and Deleting of deployment environment variables * Bitbucket Cloud: Removing commented code in deployment environment variables * Bitbucket Cloud: Update bitbucket cloud docs for deployment environment variables.
1 parent f1b182c commit f5f30e1

File tree

2 files changed

+74
-6
lines changed

2 files changed

+74
-6
lines changed

atlassian/bitbucket/cloud/repositories/deploymentEnvironments.py

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -145,12 +145,26 @@ def __init__(self, url, *args, **kwargs):
145145

146146
def __get_object(self, data):
147147
return DeploymentEnvironmentVariable(
148-
# self.url_joiner(super().get_deployment_environment_variable_url(), data["uuid"]),
149148
self.url,
150149
data,
151150
**self._new_session_args,
152151
)
153152

153+
def create(self, key, value, secured):
154+
"""
155+
Create a new deployment environment variable for the given repository.
156+
157+
:param key: string: The unique name of the variable.
158+
:param value: string: The value of the variable. If the variable is secured, this will be empty.
159+
:param secured: boolean: If true, this variable will be treated as secured. The value will never be exposed in the logs or the REST API.
160+
161+
:return: The created DeploymentEnvironment object
162+
163+
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-pipelines/#api-repositories-workspace-repo-slug-deployments-config-environments-environment-uuid-variables-post
164+
"""
165+
data = {"key": key, "value": value, "secured": secured}
166+
return self.__get_object(self.post(None, data=data))
167+
154168
def each(self, q=None, sort=None):
155169
"""
156170
Returns the list of deployment environment variables in this repository.
@@ -180,26 +194,68 @@ def each(self, q=None, sort=None):
180194

181195
class DeploymentEnvironmentVariable(BitbucketCloudBase):
182196
def __init__(self, url, data, *args, **kwargs):
197+
# This is needed when creating a new environment variable
198+
# since the API doesn't return a 'type'.
199+
if data.get("type") is None:
200+
data["type"] = "pipeline_variable"
201+
183202
super(DeploymentEnvironmentVariable, self).__init__(
184203
url, *args, data=data, expected_type="pipeline_variable", **kwargs
185204
)
186205

206+
def update(self, **kwargs):
207+
"""
208+
Update the repository variable properties. Fields not present in the request body are ignored.
209+
210+
:param kwargs: dict: The data to update.
211+
212+
:return: The updated repository variable
213+
214+
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-pipelines/#api-repositories-workspace-repo-slug-deployments-config-environments-environment-uuid-variables-variable-uuid-put
215+
"""
216+
return self._update_data(self.put("/{}".format(self.uuid), data=kwargs))
217+
218+
def delete(self):
219+
"""
220+
Delete the repository variable.
221+
222+
:return: The response on success
223+
224+
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/api-group-pipelines/#api-repositories-workspace-repo-slug-deployments-config-environments-environment-uuid-variables-variable-uuid-delete
225+
"""
226+
return super(DeploymentEnvironmentVariable, self).delete("/{}".format(self.uuid))
227+
187228
@property
188229
def uuid(self):
189-
"""The deployment environment uuid"""
230+
"""The deployment environment variable uuid"""
190231
return self.get_data("uuid")
191232

233+
@property
234+
def key(self):
235+
"""The deployment environment variable key"""
236+
return self.get_data("key")
237+
238+
@key.setter
239+
def key(self, key):
240+
"""Setter for the deployment environment variable key"""
241+
return self.update(key=key)
242+
192243
@property
193244
def secured(self):
194-
"""The deployment environment secured"""
245+
"""The deployment environment variable is secured"""
195246
return self.get_data("secured")
196247

197248
@property
198249
def type(self):
199-
"""The deployment environment deployment gate enabled"""
250+
"""The deployment environment variable type"""
200251
return self.get_data("type")
201252

202253
@property
203254
def value(self):
204-
"""The deployment environment environment lock enabled"""
255+
"""The deployment environment variable value"""
205256
return self.get_data("value")
257+
258+
@value.setter
259+
def value(self, value):
260+
"""Setter for the deployment environment variable value"""
261+
return self.update(value=value)

docs/bitbucket.rst

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,19 @@ Bitbucket Cloud
369369
deployment_environment = repository.deployment_environments.get(deployment_environment_key)
370370
371371
# Get a list of deployment environment variables from a deployment environment
372-
deployment_environment.deployment_environment_variables.each():
372+
deployment_environment_variables = deployment_environment.deployment_environment_variables.each():
373+
374+
# Create a new deployment environment variable with a name of 'KEY', value of 'VALUE' and is not secured.
375+
new_deployment_environment_variable = deployment_environment.deployment_environment_variables.create("KEY", "VALUE", False)
376+
377+
# Update the 'key' field of repository_variable
378+
updated_deployment_environment_variable = new_deployment_environment_variable.update(key="UPDATED_DEPLOYMENT_ENVIRONMENT_VARIABLE_KEY")
379+
380+
# Update the 'value' field of repository_variable
381+
updated_deployment_environment_variable = new_deployment_environment_variable.update(value="UPDATED_DEPLOYMENT_ENVIRONMENT_VARIABLE_VALUE")
382+
383+
# Delete deployment environment variable
384+
updated_deployment_environment_variable.delete()
373385
374386
# Get a list of group permissions from a repository
375387
repository.group_permissions.each():

0 commit comments

Comments
 (0)