Esempio n. 1
0
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)
Esempio n. 2
0
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'])
Esempio n. 4
0
    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'])