Skip to content

Commit 8b151f6

Browse files
authored
Merge pull request #164 from dataiku/fix/dss90-clean-apideployment-deletion
Clean deletion process for APIDeployerDeployment
2 parents 83d26e5 + 69375fc commit 8b151f6

File tree

1 file changed

+20
-6
lines changed

1 file changed

+20
-6
lines changed

dataikuapi/dss/apideployer.py

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -334,15 +334,29 @@ def start_update(self):
334334

335335
return DSSFuture(self.client, future_response.get('jobId', None), future_response)
336336

337-
def delete(self):
337+
def delete(self, disable_first=False):
338338
"""
339-
Deletes this deployment
339+
Deletes this deployment. The disable_first flag automatically disables the deployment
340+
before its deletion.
341+
342+
:param boolean disable_first: If True, automatically disables this deployment before deleting it.
343+
If False, will raise an Exception if this deployment is enabled.
340344
341-
You may only delete a deployment if it is disabled and has been updated after disabling it.
342345
"""
343-
return self.client._perform_empty(
344-
"DELETE", "/api-deployer/deployments/%s" % (self.deployment_id))
345346

347+
# Check if the deployment is disabled
348+
is_enabled = self.get_status().light_status["deploymentBasicInfo"].get("enabled")
349+
if is_enabled and not disable_first:
350+
raise Exception("Deployment {} deletion failed: deployment must be disabled first.".format(self.deployment_id))
351+
if is_enabled:
352+
settings = self.get_settings()
353+
settings.set_enabled(enabled=False)
354+
settings.save()
355+
self.client._perform_empty(
356+
"DELETE", "/api-deployer/deployments/%s" % (self.deployment_id))
357+
358+
359+
346360

347361
class DSSAPIDeployerDeploymentSettings(object):
348362
"""
@@ -518,7 +532,7 @@ def delete(self):
518532
519533
You may only delete a service if it has no deployments on it anymore.
520534
"""
521-
return self.client._perform_empty(
535+
self.client._perform_empty(
522536
"DELETE", "/api-deployer/services/%s" % (self.service_id))
523537

524538

0 commit comments

Comments
 (0)