def check_vehicle_id(conf):
    vehicle_id = conf.vehicle_param.vehicle_id
    if vehicle_id.HasField('vin') or vehicle_id.HasField('plate') \
            or vehicle_id.HasField('other_unique_id'):
        return True
    glog.error("Error: No vehicle ID")
    return False
def parse_error(path):
    vehicles = multi_vehicle_utils.get_vehicle(path)
    pb_value = vehicle_config_pb2.VehicleConfig()
    for vehicle in vehicles:
        conf = os.path.join(path, vehicle, ConfFile)
        try:
            proto_utils.get_pb_from_text_file(conf, pb_value)
            return False
        except text_format.ParseError:
            glog.error('Error: Cannot parse %s as binary or text proto' % conf)
            return True
def missing_file(path):
    vehicles = multi_vehicle_utils.get_vehicle(path)
    glog.info("vehicles %s" % vehicles)
    for vehicle in vehicles:
        # config file
        conf = os.path.join(path, vehicle, ConfFile)
        glog.info("vehicles conf %s" % conf)
        if os.path.exists(conf) is False:
            glog.error('Missing configuration file in %s' % vehicle)
            return True
        # record file
        glog.info("list of records:" % list_records(os.path.join(path, vehicle)))
        if len(list_records(os.path.join(path, vehicle))) == 0:
            glog.error('No record files in %s' % vehicle)
            return True
    return False
def sanity_check(input_folder, email_receivers=None):
    err_msg = None
    if missing_file(input_folder):
        err_msg = "One or more files are missing in %s" % input_folder
    elif parse_error(input_folder):
        err_msg = "Confige file cannot be parsed in %s" % input_folder
    elif missing_field(input_folder):
        err_msg = "One or more field is missing in Confige file %s" % input_folder
    elif missing_message_data(input_folder):
        err_msg = "Messages are missing in records of %s" % input_folder
    else:
        glog.info("%s Passed sanity check." % input_folder)
        return True

    if email_receivers:
        title = 'Error occurred during data sanity check'
        email_utils.send_email_error(title, {'Error': err_msg}, email_receivers)

    glog.error(err_msg)
    return False