def record_call(self, status, **kwargs): """ status can be in: ok, failure """ params = {'bss_system_id': unicode(self.network), 'status': status} params.update(kwargs) new_relic.record_custom_event('bss_status', params)
def _get_next_realtime_passages(self, rt_system, route_point, request): log = logging.getLogger(__name__) next_rt_passages = None try: next_rt_passages = rt_system.next_passage_for_route_point( route_point, request['items_per_schedule'], request['from_datetime'], request['_current_datetime'], request['duration'], request['timezone'], ) except Exception as e: log.exception( 'failure while requesting next passages to external RT system {}' .format(rt_system.rt_system_id)) new_relic.record_custom_event( 'realtime_internal_failure', { 'rt_system_id': unicode(rt_system.rt_system_id), 'message': str(e) }) if next_rt_passages is None: log.debug('no next passages, using base schedule') return None return next_rt_passages
def record_internal_failure(self, message): params = { 'ridesharing_service_id': self._get_rs_id(), 'message': message, 'ridesharing_service_url': self.service_url, } new_relic.record_custom_event('ridesharing_internal_failure', params)
def record_external_failure(message, connector_type, connector_name): params = { '{}_system_id'.format(connector_type): six.text_type(connector_name), 'message': message } new_relic.record_custom_event('{}_external_failure'.format(connector_type), params)
def record_additional_info(self, status, **kwargs): """ status can be in: ok, failure """ params = {'realtime_system_id': repr(self.rt_system_id), 'status': status} params.update(kwargs) new_relic.record_custom_event('realtime_proxy_additional_info', params)
def record_call(self, status, **kwargs): """ status can be in: ok, failure """ params = {'parking_system_id': self.provider_name, 'dataset': self.dataset, 'status': status} params.update(kwargs) new_relic.record_custom_event('parking_status', params)
def record_call(self, status, **kwargs): """ status can be in: ok, failure """ params = {'parking_system_id': "SytralRT", 'dataset': "sytral", 'status': status} params.update(kwargs) new_relic.record_custom_event('parking_status', params)
def record_internal_failure(self, message, comment=None): params = { 'realtime_system_id': six.text_type(self.rt_system_id), 'message': message } if comment is not None: params['comment'] = comment new_relic.record_custom_event('realtime_internal_failure', params)
def record_call(self, status, **kwargs): """ status can be in: ok, failure """ params = { 'ridesharing_service_id': self._get_rs_id(), 'status': status } params.update(kwargs) new_relic.record_custom_event('ridesharing_status', params)
def record_call(self, status, **kwargs): """ status can be in: ok, failure """ params = { 'realtime_system_id': six.text_type(self.rt_system_id), 'status': status } params.update(kwargs) new_relic.record_custom_event('realtime_status', params)
def record_call(self, status, **kwargs): """ status can be in: ok, failure """ params = { 'streetnetwork_id': six.text_type(self.sn_system_id), 'status': status } params.update(kwargs) new_relic.record_custom_event('streetnetwork', params)
def record_additional_info(self, status, **kwargs): """ status can be in: ok, failure """ params = { 'ridesharing_service_id': self._get_rs_id(), 'status': status, 'ridesharing_service_url': self.service_url, } params.update(kwargs) new_relic.record_custom_event('ridesharing_proxy_additional_info', params)
def record_call(self, url, status, **kwargs): """ status can be in: ok, failure """ params = { 'external_service_id': "Forseti", 'status': status, 'external_service_url': url } params.update(kwargs) new_relic.record_custom_event('external_service_status', params)
def record_call(self, status, **kwargs): """ status can be in: ok, failure """ params = { 'parking_service': 'STAR', 'dataset': self.dataset, 'status': status } params.update(kwargs) new_relic.record_custom_event('parking_service', params)
def _get_realtime_proxy(self, route_point): log = logging.getLogger(__name__) if not route_point: return None rt_system_code = get_realtime_system_code(route_point) if not rt_system_code: return None rt_system = self.instance.realtime_proxy_manager.get(rt_system_code) if not rt_system: log.info('impossible to find {}, no realtime added'.format(rt_system_code)) new_relic.record_custom_event( 'realtime_internal_failure', {'rt_system_id': rt_system_code, 'message': 'no handler found'} ) return None return rt_system
def _get_next_realtime_passages(self, route_point, request): log = logging.getLogger(__name__) if not route_point: return None rt_system_code = get_realtime_system_code(route_point) if not rt_system_code: return None rt_system = self.instance.realtime_proxy_manager.get(rt_system_code) if not rt_system: log.info('impossible to find {}, no realtime added'.format( rt_system_code)) new_relic.record_custom_event('realtime_internal_failure', { 'rt_system_id': rt_system_code, 'message': 'no handler found' }) return None next_rt_passages = None try: next_rt_passages = rt_system.next_passage_for_route_point( route_point, request['items_per_schedule'], request['from_datetime'], request['_current_datetime']) except Exception as e: log.exception( 'failure while requesting next passages to external RT system {}' .format(rt_system_code)) new_relic.record_custom_event('realtime_internal_failure', { 'rt_system_id': rt_system_code, 'message': str(e) }) if next_rt_passages is None: log.debug('no next passages, using base schedule') return None return next_rt_passages
def record_status(self, status, exc=None): data = {'type': self.__class__.__name__, 'status': status} if exc is not None: data["cause"] = str(exc) record_custom_event('autocomplete_status', data)
def record_internal_failure(self, message): params = {'realtime_system_id': unicode(self.rt_system_id), 'message': message} new_relic.record_custom_event('realtime_internal_failure', params)
def build_ridesharing_journeys(from_pt_obj, to_pt_obj, period_extremity, instance): from_coord = get_pt_object_coord(from_pt_obj) to_coord = get_pt_object_coord(to_pt_obj) from_str = "{},{}".format(from_coord.lat, from_coord.lon) to_str = "{},{}".format(to_coord.lat, to_coord.lon) try: rsjs, fps = instance.get_ridesharing_journeys_with_feed_publishers( from_str, to_str, period_extremity) except Exception as e: logging.exception( 'Error while retrieving ridesharing ads and feed_publishers from %s to %s: {}', from_str, to_str) new_relic.record_custom_event('ridesharing_internal_failure', {'message': str(e)}) rsjs = [] fps = [] pb_rsjs = [] pb_tickets = [] pb_feed_publishers = [_make_pb_fp(fp) for fp in fps if fp is not None] for rsj in rsjs: pb_rsj = response_pb2.Journey() pb_rsj_pickup = instance.georef.place("{};{}".format( rsj.pickup_place.lon, rsj.pickup_place.lat)) pb_rsj_dropoff = instance.georef.place("{};{}".format( rsj.dropoff_place.lon, rsj.dropoff_place.lat)) pickup_coord = get_pt_object_coord(pb_rsj_pickup) dropoff_coord = get_pt_object_coord(pb_rsj_dropoff) pb_rsj.requested_date_time = period_extremity.datetime pb_rsj.departure_date_time = rsj.pickup_date_time pb_rsj.arrival_date_time = rsj.dropoff_date_time pb_rsj.tags.append('ridesharing') # start teleport section start_teleport_section = pb_rsj.sections.add() start_teleport_section.id = "section_{}".format( six.text_type(generate_id())) start_teleport_section.type = response_pb2.CROW_FLY start_teleport_section.street_network.mode = response_pb2.Walking start_teleport_section.origin.CopyFrom(from_pt_obj) start_teleport_section.destination.CopyFrom(pb_rsj_pickup) start_teleport_section.length = int( crowfly_distance_between(from_coord, pickup_coord)) start_teleport_section.duration = 0 start_teleport_section.shape.extend([from_coord, pickup_coord]) start_teleport_section.begin_date_time = rsj.pickup_date_time start_teleport_section.end_date_time = rsj.pickup_date_time # report value to journey pb_rsj.distances.walking += start_teleport_section.length # real ridesharing section rs_section = pb_rsj.sections.add() rs_section.id = "section_{}".format(six.text_type(generate_id())) rs_section.type = response_pb2.RIDESHARING rs_section.origin.CopyFrom(pb_rsj_pickup) rs_section.destination.CopyFrom(pb_rsj_dropoff) rs_section.additional_informations.append( response_pb2.HAS_DATETIME_ESTIMATED) rs_section.ridesharing_information.operator = rsj.metadata.system_id rs_section.ridesharing_information.network = rsj.metadata.network if rsj.available_seats is not None: rs_section.ridesharing_information.seats.available = rsj.available_seats if rsj.total_seats is not None: rs_section.ridesharing_information.seats.total = rsj.total_seats if rsj.driver.alias: rs_section.ridesharing_information.driver.alias = rsj.driver.alias if rsj.driver.image: rs_section.ridesharing_information.driver.image = rsj.driver.image if rsj.driver.gender is not None: if rsj.driver.gender == Gender.MALE: rs_section.ridesharing_information.driver.gender = response_pb2.MALE elif rsj.driver.gender == Gender.FEMALE: rs_section.ridesharing_information.driver.gender = response_pb2.FEMALE if rsj.driver.rate is not None and rsj.driver.rate_count: rs_section.ridesharing_information.driver.rating.value = rsj.driver.rate if rsj.driver.rate_count: rs_section.ridesharing_information.driver.rating.count = rsj.driver.rate_count if rsj.metadata.rating_scale_min is not None and rsj.metadata.rating_scale_max is not None: rs_section.ridesharing_information.driver.rating.scale_min = rsj.metadata.rating_scale_min rs_section.ridesharing_information.driver.rating.scale_max = rsj.metadata.rating_scale_max if rsj.ridesharing_ad: l = rs_section.ridesharing_information.links.add() l.key = "ridesharing_ad" l.href = rsj.ridesharing_ad # TODO CO2 = length * coeffCar / (totalSeats + 1) rs_section.length = rsj.distance rs_section.shape.extend(rsj.shape) rs_section.duration = rsj.dropoff_date_time - rsj.pickup_date_time rs_section.begin_date_time = rsj.pickup_date_time rs_section.end_date_time = rsj.dropoff_date_time # report values to journey pb_rsj.distances.ridesharing += rs_section.length pb_rsj.duration += rs_section.duration pb_rsj.durations.total += rs_section.duration pb_rsj.durations.ridesharing += rs_section.duration # end teleport section end_teleport_section = pb_rsj.sections.add() end_teleport_section.id = "section_{}".format( six.text_type(generate_id())) end_teleport_section.type = response_pb2.CROW_FLY end_teleport_section.street_network.mode = response_pb2.Walking end_teleport_section.origin.CopyFrom(pb_rsj_dropoff) end_teleport_section.destination.CopyFrom(to_pt_obj) end_teleport_section.length = int( crowfly_distance_between(dropoff_coord, to_coord)) end_teleport_section.duration = 0 end_teleport_section.shape.extend([dropoff_coord, to_coord]) end_teleport_section.begin_date_time = rsj.dropoff_date_time end_teleport_section.end_date_time = rsj.dropoff_date_time # report value to journey pb_rsj.distances.walking += end_teleport_section.length # create ticket associated ticket = response_pb2.Ticket() ticket.id = "ticket_{}".format(six.text_type(generate_id())) ticket.name = "ridesharing_price_{}".format(ticket.id) ticket.found = True ticket.comment = "Ridesharing price for section {}".format( rs_section.id) ticket.section_id.extend([rs_section.id]) # also add fare to journey ticket.cost.value = rsj.price pb_rsj.fare.total.value = ticket.cost.value ticket.cost.currency = rsj.currency pb_rsj.fare.total.currency = rsj.currency pb_rsj.fare.found = True pb_rsj.fare.ticket_id.extend([ticket.id]) pb_tickets.append(ticket) pb_rsjs.append(pb_rsj) return pb_rsjs, pb_tickets, pb_feed_publishers