def test_purge_old_workspaces(self, mock_delete_clone, mock_get_workspaces, mock_get_projects, mock_db_config, mock_connect_db): """Test purge workspace > purge_limit""" mock_db_config.return_value = { 'ontap_api': 'a', 'ontap_apiuser': '******', 'ontap_apipass': '******', 'ontap_svm_name': 'd', 'ontap_aggr_name': 'e', 'ontap_data_ip': 'f' } mock_get_projects.return_value = [{ "name": "proj_1", "workspace_purge_limit": 1 }, { "name": "proj_2", "workspace_purge_limit": 2 }] mock_get_workspaces.side_effect = [ [ Mock(value='proj_1_ws_1'), # for proj_1 => return 2 workspaces Mock(value='proj_1_ws_2') ], [Mock(value='proj_2_ws_1')] # for proj_2 => return 1 workspace ] mock_delete_clone.side_effect = [ (True, None), # proj_1_ws_1 (False, None), # proj_1_ws_2 (True, None) ] # proj_2_ws_1 count, workspaces = workspace.purge_old_workspaces() self.assertEqual(count, 2) self.assertEqual(workspaces, ['proj_1_ws_1', 'proj_2_ws_1'])
def test_purge_old_workspaces(self, mock_delete_clone, mock_get_workspaces, mock_get_projects, mock_connect_db): '''Test purge workspace > purge_limit''' mock_get_projects.return_value = [{ "name": "proj_1", "workspace_purge_limit": 1 }, { "name": "proj_2", "workspace_purge_limit": 2 }] mock_get_workspaces.side_effect = [ [ Mock(value='proj_1_ws_1'), #for proj_1 => return 2 workspaces Mock(value='proj_1_ws_2') ], [Mock(value='proj_2_ws_1')] #for proj_2 => return 1 workspace ] mock_delete_clone.side_effect = [ (True, None), #proj_1_ws_1 (False, None), #proj_1_ws_2 (True, None) ] #proj_2_ws_1 count, workspaces = workspace.purge_old_workspaces() self.assertEqual(count, 2) self.assertEqual(workspaces, ['proj_1_ws_1', 'proj_2_ws_1'])
def workspace_purge(): """ Purge workspaces older than workspace_purge_limit days The workspace limit is setup in the project's initial configuration --- tags: - workspace responses: 200: description: workspaces have been purged successfully """ count, purged_workspaces = workspace_obj.purge_old_workspaces() response = { 'code': 200, 'resource': 'purge', 'customer_instance': app.config['DATABASE_NAME'], 'message': "Purged %s workspaces" % count, 'purged_workspaces': purged_workspaces, 'status': 'COMPLETED' } return jsonify(response)
def workspace_purge(): """ purge workspaces greater than workspace_purge_limit set in project config --- tags: - workspace parameters: responses: 200: description: workspace was modified successfully """ count, purged_workspaces = workspace_obj.purge_old_workspaces() response = { 'code': 200, 'resource': 'purge', 'customer_instance': app.config['DATABASE_NAME'], 'message': "Purged %s workspaces" % count, 'purged_workspaces': purged_workspaces, 'status': 'COMPLETED' } return jsonify(response)