def test_process_message_durable(self): message = { "host": "host1", "pname": "producer1", "time": "2013-03-19T18:16:48.411029Z" } message = correlator.add_correlation_info_to_message( self.tenant, message) self.assertTrue(message['meniscus']['correlation']['durable']) self.assertTrue('host' in message.keys()) self.assertTrue('pname' in message.keys()) self.assertTrue('time' in message.keys()) self.assertTrue('meniscus' in message.keys()) self.assertTrue('correlation' in message['meniscus'].keys()) meniscus_dict = message['meniscus']['correlation'] self.assertTrue('tenant_name' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['tenant_name'], self.tenant_name) self.assertTrue('ep_id' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['ep_id'], 432) self.assertTrue('pattern' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['pattern'], 'syslog') self.assertTrue('job_id' in meniscus_dict.keys()) self.assertTrue('durable' in meniscus_dict.keys()) self.assertTrue('encrypted' in meniscus_dict.keys()) self.assertTrue('@timestamp' in meniscus_dict.keys()) self.assertTrue(meniscus_dict['durable']) for sink in VALID_SINKS: self.assertEqual( meniscus_dict['destinations'][sink], self.destination)
def test_process_message_durable(self): message = { "host": "host1", "pname": "producer1", "time": "2013-03-19T18:16:48.411029Z" } message = correlator.add_correlation_info_to_message( self.tenant, message) self.assertTrue(message['meniscus']['correlation']['durable']) self.assertTrue('host' in message.keys()) self.assertTrue('pname' in message.keys()) self.assertTrue('time' in message.keys()) self.assertTrue('meniscus' in message.keys()) self.assertTrue('correlation' in message['meniscus'].keys()) meniscus_dict = message['meniscus']['correlation'] self.assertTrue('tenant_name' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['tenant_name'], self.tenant_name) self.assertTrue('ep_id' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['ep_id'], 432) self.assertTrue('pattern' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['pattern'], 'syslog') self.assertTrue('job_id' in meniscus_dict.keys()) self.assertTrue('durable' in meniscus_dict.keys()) self.assertTrue('encrypted' in meniscus_dict.keys()) self.assertTrue('@timestamp' in meniscus_dict.keys()) self.assertTrue(meniscus_dict['durable']) for sink in VALID_SINKS: self.assertEqual(meniscus_dict['destinations'][sink], self.destination)
def _correlate_syslog_message(syslog_message): #remove meniscus tenant id and message token # from the syslog structured data try: tenant_data = syslog_message['sd'].pop('meniscus') tenant_id = tenant_data['tenant'] message_token = tenant_data['token'] #if there is a key error then the syslog message did #not contain necessary credential information except KeyError: message = 'tenant_id or message token not provided' _LOG.debug('Message validation failed: {0}'.format(message)) raise errors.MessageValidationError(message) #validate the tenant and the message token tenant_identification = correlator.TenantIdentification( tenant_id, message_token) tenant = tenant_identification.get_validated_tenant() cee_message = _convert_message_cee(syslog_message) correlator.add_correlation_info_to_message(tenant, cee_message) return cee_message
def on_post(self, req, resp, tenant_id, validated_body): """ This method is passed log event data by a tenant. The request will have a message token and a tenant id which must be validated either by the local cache or by a call to this workers coordinator. """ #read message token from header message_token = req.get_header(MESSAGE_TOKEN, required=True) #Validate the tenant's JSON event log data as valid JSON. message = validated_body['log_message'] tenant_identification = correlator.TenantIdentification( tenant_id, message_token) try: tenant = tenant_identification.get_validated_tenant() message = correlator.add_correlation_info_to_message( tenant, message) except errors.MessageAuthenticationError as ex: abort(falcon.HTTP_401, ex.message) except errors.ResourceNotFoundError as ex: abort(falcon.HTTP_404, ex.message) except errors.CoordinatorCommunicationError: abort(falcon.HTTP_500) dispatch.persist_message(message) #if message is durable, return durable job info if message['meniscus']['correlation']['durable']: durable_job_id = message['meniscus']['correlation']['job_id'] job_status_uri = "http://{0}/v1/job/{1}/status" \ .format("meniscus_uri", durable_job_id) resp.status = falcon.HTTP_202 resp.body = format_response_body( { "job_id": durable_job_id, "job_status_uri": job_status_uri } ) else: resp.status = falcon.HTTP_204
def on_post(self, req, resp, tenant_id, validated_body): """ This method is passed log event data by a tenant. The request will have a message token and a tenant id which must be validated either by the local cache or by a call to this workers coordinator. """ #read message token from header message_token = req.get_header(MESSAGE_TOKEN, required=True) #Validate the tenant's JSON event log data as valid JSON. message = validated_body['log_message'] tenant_identification = correlator.TenantIdentification( tenant_id, message_token) try: tenant = tenant_identification.get_validated_tenant() message = correlator.add_correlation_info_to_message( tenant, message) except errors.MessageAuthenticationError as ex: abort(falcon.HTTP_401, ex.message) except errors.ResourceNotFoundError as ex: abort(falcon.HTTP_404, ex.message) except errors.CoordinatorCommunicationError: abort(falcon.HTTP_500) dispatch.persist_message(message) #if message is durable, return durable job info if message['meniscus']['correlation']['durable']: durable_job_id = message['meniscus']['correlation']['job_id'] job_status_uri = "http://{0}/v1/job/{1}/status" \ .format("meniscus_uri", durable_job_id) resp.status = falcon.HTTP_202 resp.body = format_response_body({ "job_id": durable_job_id, "job_status_uri": job_status_uri }) else: resp.status = falcon.HTTP_204
def test_process_message_default(self): message = { "host": "host1", "pname": "producer99", "time": "2013-03-19T18:16:48.411029Z" } message = correlator.add_correlation_info_to_message( self.tenant, message) self.assertFalse(message['meniscus']['correlation']['durable']) self.assertTrue('host' in message.keys()) self.assertTrue('pname' in message.keys()) self.assertTrue('time' in message.keys()) self.assertTrue('meniscus' in message.keys()) self.assertTrue('correlation' in message['meniscus'].keys()) meniscus_dict = message['meniscus']['correlation'] self.assertTrue('tenant_name' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['tenant_name'], self.tenant_name) self.assertTrue('ep_id' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['ep_id'], None) self.assertTrue('pattern' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['pattern'], 'default') self.assertFalse('job_id' in meniscus_dict.keys())
def test_process_message_default(self): message = { "host": "host1", "pname": "producer99", "time": "2013-03-19T18:16:48.411029Z" } message = correlator.add_correlation_info_to_message( self.tenant, message) self.assertFalse(message['meniscus']['correlation']['durable']) self.assertTrue('host' in message.keys()) self.assertTrue('pname' in message.keys()) self.assertTrue('time' in message.keys()) self.assertTrue('meniscus' in message.keys()) self.assertTrue('correlation' in message['meniscus'].keys()) meniscus_dict = message['meniscus']['correlation'] self.assertTrue('tenant_name' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['tenant_name'], self.tenant_name) self.assertTrue('ep_id' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['ep_id'], None) self.assertTrue('pattern' in meniscus_dict.keys()) self.assertEquals(meniscus_dict['pattern'], 'default') self.assertFalse('job_id' in meniscus_dict.keys())