]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Sat, 1 Feb 2025 20:30:02 +0000 (21:30 +0100)
committerRoland Häder <roland@mxchange.org>
Sat, 1 Feb 2025 20:30:02 +0000 (21:30 +0100)
- command update_nodeinfo now supports --only-erroneous
- some more debug lines

fba/boot.py
fba/commands.py

index 3969d92f4ebac97a2d1841787394c17f75030726..891978ce15236b57b85915d2cb83f1a4c1760d86 100644 (file)
@@ -234,6 +234,7 @@ def init_parser() -> None:
     parser.add_argument("--no-software", action="store_true", help="Checks only entries with no software type detected.")
     parser.add_argument("--no-auto", action="store_true", help="Checks only entries with other than AUTO_DISCOVERY as detection mode.")
     parser.add_argument("--no-detection", action="store_true", help="Checks only entries with no detection mode set.")
+    parser.add_argument("--only-erroneous", action="store_true", help="Checks only entries with errors in previous attempts.")
     parser.add_argument("--with-software", action="store_true", help="Checks only entries with any software type detected.")
     parser.add_argument("--same", action="store_true", help="Checks only entries with domain and software being the same.")
 
index ee25de6b8ba0133185892d698e2a0b639edc4920..30b8dbd61775f1e829c3c817546eb6be0cd1b925 100644 (file)
@@ -1604,6 +1604,9 @@ def update_nodeinfo(args: argparse.Namespace) -> int:
     elif args.no_detection:
         logger.info("Fetching domains with no detection mode being set ...")
         database.cursor.execute("SELECT domain, software FROM instances WHERE detection_mode IS NULL ORDER BY last_updated ASC")
+    elif args.only_erroneous:
+        logger.info("Fetching domains with erroneous status codes ...")
+        database.cursor.execute("SELECT domain, software FROM instances WHERE last_status_code > 200 ORDER BY last_updated ASC")
     elif args.same:
         logger.info("Fetching domains with domain name and software being the same ...")
         database.cursor.execute("SELECT domain, software FROM instances WHERE domain=software ORDER BY last_updated ASC")
@@ -1611,11 +1614,14 @@ def update_nodeinfo(args: argparse.Namespace) -> int:
         logger.info("Fetching domains for recently updated ...")
         database.cursor.execute("SELECT domain, software FROM instances ORDER BY last_updated ASC")
 
-    domains = database.cursor.fetchall()
-
-    logger.info("Checking %d domain(s) ...", len(domains))
+    # Init counter
     cnt = 0
-    for row in domains:
+
+    # Fetch all rows
+    rows = database.cursor.fetchall()
+
+    logger.info("Checking %d domain(s) ...", len(rows))
+    for row in rows:
         logger.debug("row[]='%s'", type(row))
         if not domain_helper.is_tld_wanted(row["domain"]):
             logger.debug("row[domain]='%s' has an unwanted TLD - SKIPPED!", row["domain"])
@@ -1628,10 +1634,10 @@ def update_nodeinfo(args: argparse.Namespace) -> int:
             continue
 
         try:
-            logger.info("Checking nodeinfo for row[domain]='%s',row[software]='%s' (%s%%) ...", row["domain"], row["software"], "{:5.1f}".format(cnt / len(domains) * 100))
+            logger.info("Checking nodeinfo for row[domain]='%s',row[software]='%s' (%s%%) ...", row["domain"], row["software"], "{:5.1f}".format(cnt / len(rows) * 100))
             software = federation.determine_software(row["domain"])
 
-            logger.debug("Determined software='%s'", software)
+            logger.debug("Determined software='%s',row[software]='%s'", software, row["software"])
             if (software != row["software"] and software is not None) or args.force_all is True or args.force_update_none is True:
                 logger.debug("software='%s'", software)
                 if software is None:
@@ -1641,13 +1647,16 @@ def update_nodeinfo(args: argparse.Namespace) -> int:
                 logger.warning("Software type for row[domain]='%s' has changed from '%s' to '%s'!", row["domain"], row["software"], software)
                 instances.set_software(row["domain"], software)
 
+            logger.debug("software='%s'", software)
             if software is not None:
                 logger.debug("Setting row[domain]='%s' as successfully determined ...", row["domain"])
                 instances.set_success(row["domain"])
+
         except network.exceptions as exception:
             logger.warning("Exception '%s' during updating nodeinfo for row[domain]='%s'", type(exception), row["domain"])
             instances.set_last_error(row["domain"], exception)
 
+        logger.debug("Updating instanes for row[domain]='%s' ...", row["domain"])
         instances.set_last_nodeinfo(row["domain"])
         instances.update(row["domain"])
         cnt = cnt + 1