示例#1
0
def add_healthcheck_endpoint(app, ES, REDIS):
    health = healthcheck.HealthCheck(app, "/healthz")

    ES = Elasticsearch([app.config['ES_ADDRESS']], ca_certs=certifi.where(), timeout=1.0)
    REDIS = redis.StrictRedis(
        host=app.config['REDIS_ADDRESS'], socket_connect_timeout=1, socket_timeout=1
    )

    def elasticsearch_available():
        ES.info()
        return True, 'elasticsearch ok'
    health.add_check(elasticsearch_available)

    def redis_available():
        REDIS.info()
        return True, 'redis ok'
    health.add_check(redis_available)

    # def main_page_renders():
    #     res = api_aservice.render_main_page(ES, None, 0, 'No Ticket', set())
    #     if res:
    #         return True, 'site ok'
    #     else:
    #         return False, 'render failed'
    #
    # removing for now due to it taking too long with many Traceback errors in the system
    # health.add_check(main_page_renders)

    _ = healthcheck.EnvironmentDump(app, "/environment")
示例#2
0
 def test_set_command_if_exists_missing(self):
     expected = {
         'protocol': 'COMMAND',
         'command': {
             'value': '/bin/bash something'
         }
     }
     labels = {'blah': '/bin/bash something'}
     h = healthcheck.HealthCheck(labels)
     actual = h._set_command_if_exists({})
     self.assertEqual({}, actual)
示例#3
0
 def restart_healthcheck(self):
     time.sleep(0.1)
     try:
         health_check = healthcheck.HealthCheck()
     except KeyboardInterrupt:
         os.killpg(0, signal.SIGINT)
         sys.exit(1)
     except Exception as e:
         LOG.error('Failed to init HealthCheck: {}'.format(e))
         self.restart_healthcheck()
         return
     hc_process = Process(target=health_check.healthcheck_main,
                          args=(self, ))
     hc_process.start()
示例#4
0
    def test_get_health_check_config_tcp(self):
        expected = [{
            'portIndex': 0,
            'protocol': 'TCP',
            'timeoutSeconds': 20,
            'intervalSeconds': 5,
            'gracePeriodSeconds': 300,
            'maxConsecutiveFailures': 3
        }]

        labels = {healthcheck.HealthCheck.HEALTH_CHECK_LABEL: 'true'}
        h = healthcheck.HealthCheck(labels)
        actual = h.get_health_check_config()
        self.assertEquals(expected, actual)
示例#5
0
    def test_get_health_check_config_http_portindex(self):
        expected = [{
            'portIndex': 1,
            'protocol': 'HTTP',
            'timeoutSeconds': 20,
            'intervalSeconds': 5,
            'gracePeriodSeconds': 300,
            'maxConsecutiveFailures': 3
        }]

        labels = {healthcheck.HealthCheck.PORT_INDEX_LABEL: 1}
        h = healthcheck.HealthCheck(labels)
        actual = h.get_health_check_config()
        self.assertEquals(expected, actual)
示例#6
0
    def test_get_health_check_config_command(self):
        expected = [{
            'portIndex': 0,
            'protocol': 'COMMAND',
            'command': {
                'value': '/bin/bash something'
            },
            'timeoutSeconds': 20,
            'intervalSeconds': 5,
            'gracePeriodSeconds': 300,
            'maxConsecutiveFailures': 3
        }]

        labels = {healthcheck.HealthCheck.COMMAND_LABEL: '/bin/bash something'}
        h = healthcheck.HealthCheck(labels)
        actual = h.get_health_check_config()
        self.assertEquals(expected, actual)
示例#7
0
 def test_set_path_if_exists(self):
     expected = {'path': '/my/path', 'protocol': 'HTTP'}
     labels = {healthcheck.HealthCheck.PATH_LABEL: '/my/path'}
     h = healthcheck.HealthCheck(labels)
     actual = h._set_path_if_exists({})
     self.assertEqual(expected, actual)
示例#8
0
 def test_get_label_value_none(self):
     labels = {'label1': 'value1', 'label2': 'value2'}
     h = healthcheck.HealthCheck(labels)
     actual = h._get_label_value(None)
     self.assertEquals(None, actual)
示例#9
0
 def test_get_label_value_list(self):
     labels = ['label1=value1', 'label2=value2']
     h = healthcheck.HealthCheck(labels)
     actual = h._get_label_value('label1')
     self.assertEquals('value1', actual)
示例#10
0
 def test_get_label_value_case_missing(self):
     labels = {'label1': 'value1', 'label2': 'value2'}
     h = healthcheck.HealthCheck(labels)
     actual = h._get_label_value('MISSING')
     self.assertEquals(None, actual)
示例#11
0
 def test_not_none(self):
     h = healthcheck.HealthCheck({})
     self.assertIsNotNone(h)
示例#12
0
 def test_get_label_value_case_sensitive(self):
     labels = {'label1': 'value1', 'label2': 'value2'}
     h = healthcheck.HealthCheck(labels)
     actual = h._get_label_value('LABEL2')
     self.assertEquals(None, actual)
示例#13
0
 def test_label_exists_list(self):
     labels = ['label1=value1', 'label2=value2']
     h = healthcheck.HealthCheck(labels)
     actual = h._label_exists('label1')
     self.assertTrue(actual)
示例#14
0
 def test_set_port_if_exists(self):
     expected = {'portIndex': '123', 'protocol': 'HTTP'}
     labels = {healthcheck.HealthCheck.PORT_INDEX_LABEL: '123'}
     h = healthcheck.HealthCheck(labels)
     actual = h._set_port_index_if_exists({})
     self.assertEqual(expected, actual)
示例#15
0
 def test_label_exists_case_sensitive(self):
     labels = {'label1': 'value1', 'label2': 'value2'}
     h = healthcheck.HealthCheck(labels)
     actual = h._label_exists('Label1')
     self.assertFalse(actual)
示例#16
0
 def test_label_exists_empty(self):
     h = healthcheck.HealthCheck({})
     actual = h._label_exists('label1')
     self.assertFalse(actual)
示例#17
0
 def test_label_exists(self):
     labels = {'label1': 'value1', 'label2': 'value2'}
     h = healthcheck.HealthCheck(labels)
     actual = h._label_exists('label1')
     self.assertTrue(actual)
示例#18
0
 def test_set_path_if_exists_missing(self):
     labels = {'something': '/my/path'}
     h = healthcheck.HealthCheck(labels)
     actual = h._set_path_if_exists({})
     self.assertEqual({}, actual)
示例#19
0
 def test_label_exists_none(self):
     labels = ['label1=value1', 'label2=value2']
     h = healthcheck.HealthCheck(labels)
     actual = h._label_exists(None)
     self.assertFalse(actual)
示例#20
0
 def test_label_exists_missing(self):
     labels = {'label1': 'value1', 'label2': 'value2'}
     h = healthcheck.HealthCheck(labels)
     actual = h._label_exists('MISSING')
     self.assertFalse(actual)
示例#21
0
 def test_set_port_if_exists_missing(self):
     labels = {'blah': '123'}
     h = healthcheck.HealthCheck(labels)
     actual = h._set_port_index_if_exists({})
     self.assertEqual({}, actual)