lorax-composer: Delete workspace copy when deleting blueprint
Also extends the blueprint delete test to also check the workspace.
This commit is contained in:
parent
b936dfb198
commit
26bd2c1378
@ -201,7 +201,8 @@ DELETE `/api/v0/blueprints/delete/<blueprint_name>`
|
||||
|
||||
Delete a blueprint. The blueprint is deleted from the branch, and will no longer
|
||||
be listed by the `list` route. A blueprint can be undeleted using the `undo` route
|
||||
to revert to a previous commit.
|
||||
to revert to a previous commit. This will also delete the workspace copy of the
|
||||
blueprint.
|
||||
|
||||
The response will be a status response with `status` set to true, or an
|
||||
error response with it set to false and an error message included.
|
||||
@ -1212,6 +1213,7 @@ def v0_api(api):
|
||||
|
||||
try:
|
||||
with api.config["GITLOCK"].lock:
|
||||
workspace_delete(api.config["GITLOCK"].repo, branch, blueprint_name)
|
||||
delete_recipe(api.config["GITLOCK"].repo, branch, blueprint_name)
|
||||
except Exception as e:
|
||||
log.error("(v0_blueprints_delete) %s", str(e))
|
||||
|
@ -370,6 +370,25 @@ class ServerTestCase(unittest.TestCase):
|
||||
|
||||
def test_10_blueprints_delete(self):
|
||||
"""Test DELETE /api/v0/blueprints/delete/<blueprint_name>"""
|
||||
|
||||
# Push a new workspace blueprint first
|
||||
test_blueprint = {"description": "An example GlusterFS server with samba, ws version",
|
||||
"name":"example-glusterfs",
|
||||
"version": "1.4.0",
|
||||
"modules":[{"name":"glusterfs", "version":"5.*"},
|
||||
{"name":"glusterfs-cli", "version":"5.*"}],
|
||||
"packages":[{"name":"samba", "version":"4.*.*"},
|
||||
{"name":"tmux", "version":"2.8"}],
|
||||
"groups": []}
|
||||
resp = self.server.post("/api/v0/blueprints/workspace",
|
||||
data=json.dumps(test_blueprint),
|
||||
content_type="application/json")
|
||||
data = json.loads(resp.data)
|
||||
self.assertEqual(data, {"status":True})
|
||||
# Make sure the workspace file is present
|
||||
self.assertEqual(os.path.exists(joinpaths(self.repo_dir, "git/workspace/master/example-glusterfs.toml")), True)
|
||||
|
||||
# This should delete the git blueprint and the workspace copy
|
||||
resp = self.server.delete("/api/v0/blueprints/delete/example-glusterfs")
|
||||
data = json.loads(resp.data)
|
||||
self.assertEqual(data, {"status":True})
|
||||
@ -381,6 +400,9 @@ class ServerTestCase(unittest.TestCase):
|
||||
blueprints = data.get("blueprints")
|
||||
self.assertEqual("example-glusterfs" in blueprints, False)
|
||||
|
||||
# Make sure the workspace file is gone
|
||||
self.assertEqual(os.path.exists(joinpaths(self.repo_dir, "git/workspace/master/example-glusterfs.toml")), False)
|
||||
|
||||
def test_11_blueprints_undo(self):
|
||||
"""Test POST /api/v0/blueprints/undo/<blueprint_name>/<commit>"""
|
||||
resp = self.server.get("/api/v0/blueprints/changes/example-glusterfs")
|
||||
|
Loading…
Reference in New Issue
Block a user