set log source

This commit is contained in:
2022-03-02 20:10:46 +01:00
parent dcf094437e
commit 04e49a2b23
6 changed files with 85 additions and 46 deletions
+4 -2
View File
@@ -5,7 +5,7 @@ import serial
from serial import Serial from serial import Serial
from error.SIMError import SIMError from error.SIMError import SIMError
from logs.LogSender import LogSender, LOG_ERROR from logs.LogSender import LOG_APPOINTMENT_SUCCESS, SUBJECT_SIM_INFO
from params import firebase_store_manager, oracle_log_sender from params import firebase_store_manager, oracle_log_sender
from pojo.SimInfoPojo import SimInfoPojo from pojo.SimInfoPojo import SimInfoPojo
from utils.excel_reader import ExcelHelper from utils.excel_reader import ExcelHelper
@@ -38,7 +38,7 @@ class ModemPool:
def _generate_error_msg(self, slot_position, index, error: SIMError): def _generate_error_msg(self, slot_position, index, error: SIMError):
msg = "slot({}) SIM({}), error:{}".format(slot_position, index + 1, msg = "slot({}) SIM({}), error:{}".format(slot_position, index + 1,
error.value) error.value)
self._log_sender.send_log(msg, subject=self.TAG, type=LOG_ERROR) self._log_sender.send_log(msg, source=self.TAG, subject=SUBJECT_SIM_INFO, type=error.value)
return msg return msg
def get_raw_phone_number(self, slot_position): def get_raw_phone_number(self, slot_position):
@@ -69,6 +69,8 @@ class ModemPool:
position = (slot_position - 1) * 15 + sim_position position = (slot_position - 1) * 15 + sim_position
if phone_number: if phone_number:
self._db_manager.save_sim_info(SimInfoPojo(phone=phone_number, ccid=ccid, position=position)) self._db_manager.save_sim_info(SimInfoPojo(phone=phone_number, ccid=ccid, position=position))
self._log_sender.send_log(phone_number, source=self.TAG, subject=SUBJECT_SIM_INFO,
type=LOG_APPOINTMENT_SUCCESS)
# write the number to sim card's phonebook # write the number to sim card's phonebook
cmd = f'AT+CPBW={self.phone_number_position},\"{phone_number}\"\r' cmd = f'AT+CPBW={self.phone_number_position},\"{phone_number}\"\r'
self._send_command(cmd, ser, wait_time_in_s=2) self._send_command(cmd, ser, wait_time_in_s=2)
BIN
View File
Binary file not shown.
+23 -2
View File
@@ -14,6 +14,8 @@ TIMEOUT = "timeout_items"
class DataManager: class DataManager:
batch_size = 20
def __init__(self): def __init__(self):
cred = credentials.Certificate("appointment.json") cred = credentials.Certificate("appointment.json")
self._app = firebase_admin.initialize_app(cred) self._app = firebase_admin.initialize_app(cred)
@@ -50,13 +52,27 @@ class DataManager:
doc_ref = self._db.collection(TIMEOUT).document(str(contact.phone)) doc_ref = self._db.collection(TIMEOUT).document(str(contact.phone))
doc_ref.set(contact.to_firestore_dict()) doc_ref.set(contact.to_firestore_dict())
def _delete_collection(self, coll_ref, batch_size):
docs = coll_ref.limit(batch_size).stream()
deleted = 0
if __name__ == '__main__': for doc in docs:
print(f'Deleting doc {doc.id} => {doc.to_dict()}')
doc.reference.delete()
deleted = deleted + 1
if deleted >= batch_size:
return self._delete_collection(coll_ref, batch_size)
def clear_all_sim_info(self):
coll_ref = self._db.collection(SIM_INFOS)
self._delete_collection(coll_ref, self.batch_size)
def save_to_excel(self):
# Start from the first cell. Rows and columns are zero indexed. # Start from the first cell. Rows and columns are zero indexed.
sim_info_list = [] sim_info_list = []
for sim in params.firebase_store_manager.get_all_sim_infos().stream(): for sim in self.get_all_sim_infos().stream():
print(sim) print(sim)
sim_pojo = SimInfoPojo.from_firestore_dict(sim.to_dict()) sim_pojo = SimInfoPojo.from_firestore_dict(sim.to_dict())
sim_info_list.append(sim_pojo) sim_info_list.append(sim_pojo)
@@ -72,3 +88,8 @@ if __name__ == '__main__':
worksheet.write(row, col + 2, info.position) worksheet.write(row, col + 2, info.position)
row += 1 row += 1
workbook.close() workbook.close()
if __name__ == '__main__':
# params.firebase_store_manager.save_to_excel()
params.firebase_store_manager.clear_all_sim_info()
BIN
View File
Binary file not shown.
+12 -2
View File
@@ -7,12 +7,15 @@ from oci.loggingingestion import LoggingClient
from oci.loggingingestion.models import PutLogsDetails, LogEntryBatch, LogEntry from oci.loggingingestion.models import PutLogsDetails, LogEntryBatch, LogEntry
from logs.AppLogging import init_logger from logs.AppLogging import init_logger
from pojo import ReserveResultPojo
from pojo.ReserveResultPojo import PublishType
LOG_ERROR = "ERROR" LOG_ERROR = "ERROR"
LOG_INFO = "INFO" LOG_INFO = "INFO"
LOG_APPOINTMENT_ERROR = "APPOINTMENT_ERROR" LOG_APPOINTMENT_ERROR = "APPOINTMENT_ERROR"
LOG_APPOINTMENT_TIMEOUT = "TIMEOUT" LOG_APPOINTMENT_TIMEOUT = "TIMEOUT"
LOG_APPOINTMENT_SUCCESS = "SUCCESS" LOG_APPOINTMENT_SUCCESS = "SUCCESS"
SUBJECT_SIM_INFO = "sim_card"
class LogSender: class LogSender:
@@ -21,7 +24,14 @@ class LogSender:
self._identity = oci.identity.IdentityClient(self._config) self._identity = oci.identity.IdentityClient(self._config)
self._loggingingestion_client = LoggingClient(self._config) self._loggingingestion_client = LoggingClient(self._config)
def send_log(self, msg: str, subject="appointment", type: str = "INFO"): def send_appoint_result(self, result: ReserveResultPojo):
if result.type == PublishType.SUCCESS:
# get id
self.send_log(result.id, type=LOG_APPOINTMENT_SUCCESS)
else:
self.send_log(result.message, type=LOG_APPOINTMENT_ERROR)
def send_log(self, msg: str, source="Appointment", subject="appointment", type: str = "INFO"):
log_id = "ocid1.log.oc1.eu-frankfurt-1.amaaaaaacvc3jtia5enufv5jxe6binq4ndaty7pt5mk7uidipfd62ynwdhnq" log_id = "ocid1.log.oc1.eu-frankfurt-1.amaaaaaacvc3jtia5enufv5jxe6binq4ndaty7pt5mk7uidipfd62ynwdhnq"
response = self._loggingingestion_client.put_logs( response = self._loggingingestion_client.put_logs(
log_id=log_id, log_id=log_id,
@@ -33,7 +43,7 @@ class LogSender:
data=msg, data=msg,
id=log_id, id=log_id,
time=datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ"))], time=datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ"))],
source="Appointment", source=source,
type=type, type=type,
defaultlogentrytime=datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ"), defaultlogentrytime=datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.%fZ"),
subject=subject)]) subject=subject)])
+17 -11
View File
@@ -3,6 +3,7 @@ import logging
import re import re
import sys import sys
import time import time
from typing import Union
from gsmmodem import GsmModem from gsmmodem import GsmModem
@@ -18,7 +19,7 @@ from logs.AppLogging import init_logger
from utils.message_receiver import MessageReceiver from utils.message_receiver import MessageReceiver
BAUDRATE = 115200 BAUDRATE = 115200
OTP_TIMEOUT = 60 OTP_TIMEOUT = 70
is_finished = False is_finished = False
commandor = Commandor() commandor = Commandor()
@@ -61,10 +62,12 @@ def execut_USSD_cmd(cmd, ser):
send_command(cmd, ser) send_command(cmd, ser)
def create_modem_for_port(port: str) -> SerialModem: def create_modem_for_port(port: str) -> Union[SerialModem, None]:
logger.info('Initializing modem... for ' + port) logger.info('Initializing modem... for ' + port)
# Uncomment the following line to see what the modem is doing: # Uncomment the following line to see what the modem is doing:
init_logger() init_logger()
serial_modem = None
try:
modem = GsmModem(port) modem = GsmModem(port)
time.sleep(1) time.sleep(1)
modem.connect() modem.connect()
@@ -75,8 +78,9 @@ def create_modem_for_port(port: str) -> SerialModem:
response = modem.write(cmd, True) response = modem.write(cmd, True)
ccid = response[0].split(" ")[1].replace("\"", "") ccid = response[0].split(" ")[1].replace("\"", "")
logger.info("The SIM card ccid is:" + ccid) logger.info("The SIM card ccid is:" + ccid)
return SerialModem(modem=modem, ccid=ccid)
serial_modem = SerialModem(modem=modem, ccid=ccid) except Exception as ext:
print(ext)
return serial_modem return serial_modem
@@ -133,7 +137,9 @@ def select_sim_storage(ser) -> bool:
def init_modems() -> list: def init_modems() -> list:
modems = [] modems = []
for port in get_devices_ports(): for port in get_devices_ports():
modems.append(create_modem_for_port(port)) serial_modem = create_modem_for_port(port)
if serial_modem:
modems.append(serial_modem)
# read the contact, and contact the 2 objects together # read the contact, and contact the 2 objects together
excel_reader = ExcelHelper() excel_reader = ExcelHelper()
contacts = excel_reader.read_contacts() contacts = excel_reader.read_contacts()
@@ -153,7 +159,7 @@ def on_message_received(ch, method, properties, body):
result = ReserveResultPojo.from_json(body) result = ReserveResultPojo.from_json(body)
print(result) print(result)
firebase_store_manager.save(result) firebase_store_manager.save(result)
oracle_log_sender.send_log(str(result.id), type=LOG_APPOINTMENT_SUCCESS) oracle_log_sender.send_appoint_result(result)
# set the flag to True # set the flag to True
global is_finished global is_finished
is_finished = True is_finished = True
@@ -180,8 +186,8 @@ def read_all_the_phone_number():
def start_book(): def start_book():
slot_number = 5 slot_number = 12
slot_sum = 6 slot_sum = 31
for i in range(slot_number, slot_sum + 1): for i in range(slot_number, slot_sum + 1):
card_pool.reset() card_pool.reset()
print("will switch to " + str(i)) print("will switch to " + str(i))
@@ -200,6 +206,6 @@ if __name__ == '__main__':
init_logger() init_logger()
logger = logging.getLogger() logger = logging.getLogger()
logger.addHandler(logging.StreamHandler(stream=sys.stdout)) logger.addHandler(logging.StreamHandler(stream=sys.stdout))
# read_all_the_phone_number() read_all_the_phone_number()
start_listen() # start_listen()
start_book() # start_book()