Skip to content

Commit

Permalink
Merge pull request #249 from giffels/fix-sqlite-updates
Browse files Browse the repository at this point in the history
Fix sqlite3 remote_resource_uuid update
  • Loading branch information
giffels authored May 25, 2022
2 parents 34e88af + 12508ca commit d45425a
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 6 deletions.
5 changes: 3 additions & 2 deletions docs/source/changelog.rst
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
.. Created by changelog.py at 2022-05-11, command
.. Created by changelog.py at 2022-05-25, command
'/Users/giffler/.cache/pre-commit/repor6pnmwlm/py_env-default/bin/changelog docs/source/changes compile --output=docs/source/changelog.rst'
based on the format of 'https://keepachangelog.com/'
#########
CHANGELOG
#########

[Unreleased] - 2022-05-11
[Unreleased] - 2022-05-25
=========================

Added
Expand All @@ -25,6 +25,7 @@ Fixed
-----

* Unique constraints in database schema have been fixed to allow same machine_type and remote_resource_uuid on multiple sites
* Update the remote_resource_uuid in sqlite registry on a each update

[0.6.0] - 2021-08-09
====================
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
category: fixed
summary: "Update the remote_resource_uuid in sqlite registry on a each update"
description: |
The change drone state initialisation update revealed a bug in TARDIS. The ``remote_resource_uuid`` in the
``SqliteRegistry`` plugin is not updated at all. As a result, TARDIS keeps crashing on restarts due to the missing
``remote_resource_uuid`` until the DB has been removed.
pull_requests:
- 249
issues:
- 248
1 change: 1 addition & 0 deletions tardis/plugins/sqliteregistry.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@ async def notify(self, state: State, resource_attributes: AttributeDict) -> None

async def update_resource(self, bind_parameters: Dict) -> None:
sql_query = """UPDATE Resources SET updated = :updated,
remote_resource_uuid = :remote_resource_uuid,
state_id = (SELECT state_id FROM ResourceStates WHERE state = :state)
WHERE drone_uuid = :drone_uuid
AND site_id = (SELECT site_id FROM Sites WHERE site_name = :site_name)"""
Expand Down
7 changes: 3 additions & 4 deletions tests/plugins_t/test_sqliteregistry.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import logging

from tardis.resources.dronestates import BootingState
from tardis.resources.dronestates import IntegrateState
from tardis.resources.dronestates import RequestState, DownState
from tardis.interfaces.state import State
from tardis.plugins.sqliteregistry import SqliteRegistry
Expand All @@ -27,7 +26,7 @@ def setUpClass(cls):
cls.test_machine_type = "MyGreatTestMachineType"
cls.tables_in_db = {"MachineTypes", "Resources", "ResourceStates", "Sites"}
cls.test_resource_attributes = {
"remote_resource_uuid": "bf85022b-fdd6-42b1-932d-086c288d4755",
"remote_resource_uuid": None,
"drone_uuid": f"{cls.test_site_name}-07af52405e",
"site_name": cls.test_site_name,
"machine_type": cls.test_machine_type,
Expand Down Expand Up @@ -66,7 +65,7 @@ def setUpClass(cls):
cls.test_updated_notify_result = (
cls.test_updated_resource_attributes["remote_resource_uuid"],
cls.test_updated_resource_attributes["drone_uuid"],
str(IntegrateState()),
str(BootingState()),
cls.test_updated_resource_attributes["site_name"],
cls.test_updated_resource_attributes["machine_type"],
str(cls.test_updated_resource_attributes["created"]),
Expand Down Expand Up @@ -220,7 +219,7 @@ def fetch_all():

run_async(
self.registry.notify,
IntegrateState(),
BootingState(),
self.test_updated_resource_attributes,
)

Expand Down

0 comments on commit d45425a

Please sign in to comment.