def health_check(cluster_id, report_uri, username): with util.lock('cluster_health_check') as lock: if not lock: raise Exception('failed to acquire lock to check health') user = user_db.get_user_object(username) cluster_info = util.ActionHelper.get_cluster_info(cluster_id, user) adapter_id = cluster_info[const.ADAPTER_ID] adapter_info = util.ActionHelper.get_adapter_info( adapter_id, cluster_id, user ) deploy_manager = DeployManager(adapter_info, cluster_info, None) try: deploy_manager.check_cluster_health(report_uri) except Exception as exc: logging.error("health_check exception: ============= %s" % exc) data = {'state': 'error', 'error_message': str(exc), 'report': {}} reports = health_check_db.list_health_reports( cluster_id, user=user) if not reports: # Exception before executing command remotely for health check. # No reports names sending back yet. Create a report name = 'pre_remote_health_check' health_check_db.add_report_record( cluster_id, name, user=user, **data ) health_check_db.update_multi_reports(cluster_id, user=user, **data)
def test_update_and_get_health_report(self): report_name = 'test-report' health_check_db.add_report_record(self.cluster_id, name=report_name) url = '/'.join((self.url, report_name)) request_data = json.dumps( {"report": report_sample, "state": "finished"} ) return_value = self.test_client.put(url, data=request_data) resp = json.loads(return_value.get_data()) self.maxDiff = None self.assertEqual(200, return_value.status_code) self.assertDictEqual(report_sample, resp['report']) return_value = self.test_client.put(url, data=request_data) self.assertEqual(403, return_value.status_code) # Get report return_value = self.test_client.get(url) self.assertEqual(200, return_value.status_code) self.assertDictEqual(report_sample, resp['report'])
def test_update_and_get_health_report(self): report_name = 'test-report' health_check_db.add_report_record(self.cluster_id, name=report_name) url = '/'.join((self.url, report_name)) request_data = json.dumps({ "report": report_sample, "state": "finished" }) return_value = self.test_client.put(url, data=request_data) resp = json.loads(return_value.get_data()) self.maxDiff = None self.assertEqual(200, return_value.status_code) self.assertDictEqual(report_sample, resp['report']) return_value = self.test_client.put(url, data=request_data) self.assertEqual(403, return_value.status_code) # Get report return_value = self.test_client.get(url) self.assertEqual(200, return_value.status_code) self.assertDictEqual(report_sample, resp['report'])