|
34 | 34 | from pymongo.errors import DuplicateKeyError |
35 | 35 | from fastapi_users import FastAPIUsers |
36 | 36 | from beanie import PydanticObjectId |
| 37 | +from pydantic import BaseModel |
37 | 38 | from kernelci.api.models import ( |
38 | 39 | Node, |
39 | 40 | Hierarchy, |
|
42 | 43 | KernelVersion, |
43 | 44 | EventHistory, |
44 | 45 | ) |
45 | | -from pydantic import BaseModel |
46 | 46 | from .auth import Authentication |
47 | 47 | from .db import Database |
48 | 48 | from .pubsub import PubSub |
|
62 | 62 | from .metrics import Metrics |
63 | 63 |
|
64 | 64 |
|
65 | | - |
66 | 65 | @asynccontextmanager |
67 | 66 | async def lifespan(app: FastAPI): # pylint: disable=redefined-outer-name |
68 | 67 | """Lifespan functions for startup and shutdown events""" |
@@ -714,6 +713,17 @@ async def post_node(node: Node, |
714 | 713 | return obj |
715 | 714 |
|
716 | 715 |
|
| 716 | +def is_same_flags(old_node, new_node): |
| 717 | + """ Compare processed_by_kcidb_bridge flags |
| 718 | + Returns True if flags are same, False otherwise |
| 719 | + """ |
| 720 | + old_flag = old_node.processed_by_kcidb_bridge |
| 721 | + new_flag = new_node.processed_by_kcidb_bridge |
| 722 | + if old_flag == new_flag: |
| 723 | + return True |
| 724 | + return False |
| 725 | + |
| 726 | + |
717 | 727 | @app.put('/node/{node_id}', response_model=Node, response_model_by_alias=False) |
718 | 728 | async def put_node(node_id: str, node: Node, |
719 | 729 | user: str = Depends(authorize_user), |
@@ -757,9 +767,7 @@ async def put_node(node_id: str, node: Node, |
757 | 767 | # KCIDB flags are reset on any update, because this means we need |
758 | 768 | # to reprocess updated node. |
759 | 769 | # So reset flag, unless flag is changed in the request |
760 | | - old_flag = node_from_id.processed_by_kcidb_bridge |
761 | | - new_flag = node.processed_by_kcidb_bridge |
762 | | - if old_flag == new_flag: |
| 770 | + if is_same_flags(node_from_id, node): |
763 | 771 | new_node_def.processed_by_kcidb_bridge = False |
764 | 772 |
|
765 | 773 | # Update node in the DB |
|
0 commit comments