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)
Exemple #2
0
    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)
Exemple #4
0
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)
Exemple #5
0
 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)
Exemple #6
0
 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)
Exemple #7
0
 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)
Exemple #8
0
 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)
Exemple #10
0
 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)
Exemple #11
0
 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)
Exemple #12
0
 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)
Exemple #13
0
 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)
Exemple #14
0
 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)
Exemple #15
0
    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
Exemple #16
0
    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)
Exemple #18
0
 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)
Exemple #19
0
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