diff --git a/manila/db/sqlalchemy/api.py b/manila/db/sqlalchemy/api.py index 78888d077b..932776007e 100644 --- a/manila/db/sqlalchemy/api.py +++ b/manila/db/sqlalchemy/api.py @@ -2636,6 +2636,9 @@ def share_instance_access_update(context, access_id, instance_id, updates): share_access_map_updates, share_instance_access_map_updates = ( _extract_subdict_by_fields(updates, share_access_fields) ) + updated_at = timeutils.utcnow() + share_access_map_updates['updated_at'] = updated_at + share_instance_access_map_updates['updated_at'] = updated_at with session.begin(): share_access = _share_access_get_query( @@ -3134,6 +3137,10 @@ def share_snapshot_instance_access_update( _extract_subdict_by_fields(updates, snapshot_access_fields) ) + updated_at = timeutils.utcnow() + snapshot_access_map_updates['updated_at'] = updated_at + share_instance_access_map_updates['updated_at'] = updated_at + session = get_session() with session.begin(): diff --git a/manila/tests/db/sqlalchemy/test_api.py b/manila/tests/db/sqlalchemy/test_api.py index 2ce7d66231..9212174d49 100644 --- a/manila/tests/db/sqlalchemy/test_api.py +++ b/manila/tests/db/sqlalchemy/test_api.py @@ -145,6 +145,10 @@ class ShareAccessDatabaseAPITestCase(test.TestCase): self.assertEqual(constants.STATUS_ERROR, instance_access_mapping['state']) self.assertEqual('watson4heisman', access['access_key']) + self.assertIsNotNone(access['updated_at']) + time_now = timeutils.utcnow() + self.assertTrue(access['updated_at'] < time_now) + self.assertTrue(instance_access_mapping['updated_at'] < time_now) @ddt.data(True, False) def test_share_access_get_all_for_instance_with_share_access_data( @@ -1787,6 +1791,9 @@ class ShareSnapshotDatabaseAPITestCase(test.TestCase): {'state': constants.STATUS_ACTIVE}) self.assertSubDictMatch(values, actual_result.to_dict()) + self.assertIsNotNone(actual_result['updated_at']) + time_now = timeutils.utcnow() + self.assertTrue(actual_result['updated_at'] < time_now) def test_share_snapshot_instance_access_get(self): access = db_utils.create_snapshot_access( diff --git a/releasenotes/notes/bug-2031193-set-updated_at-access-rules-a382a3e352f3ef7d.yaml b/releasenotes/notes/bug-2031193-set-updated_at-access-rules-a382a3e352f3ef7d.yaml new file mode 100644 index 0000000000..cfc92083d3 --- /dev/null +++ b/releasenotes/notes/bug-2031193-set-updated_at-access-rules-a382a3e352f3ef7d.yaml @@ -0,0 +1,5 @@ +--- +fixes: + - | + The ``updated_at`` field is correctly set on share and snapshot access + rules when an update has been made on the database.