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