outposts: replace migration with string backup handler
This commit is contained in:
parent
597188c7ee
commit
7203bd37a3
|
@ -1,31 +0,0 @@
|
||||||
from pickle import loads
|
|
||||||
from typing import Any # nosec
|
|
||||||
|
|
||||||
from redis import Redis
|
|
||||||
|
|
||||||
from lifecycle.migrate import BaseMigration
|
|
||||||
from passbook.lib.config import CONFIG
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(BaseMigration):
|
|
||||||
|
|
||||||
def __init__(self, cur: Any, con: Any):
|
|
||||||
super().__init__(cur, con)
|
|
||||||
self.redis = Redis(
|
|
||||||
host=CONFIG.y("redis.host"),
|
|
||||||
port=6379,
|
|
||||||
db=CONFIG.y("redis.cache_db"),
|
|
||||||
password=CONFIG.y("redis.password"),
|
|
||||||
)
|
|
||||||
|
|
||||||
def needs_migration(self) -> bool:
|
|
||||||
keys = self.redis.keys(":1:outpost_*")
|
|
||||||
for key in keys:
|
|
||||||
value = loads(self.redis.get(key)) # nosec
|
|
||||||
if isinstance(value, str):
|
|
||||||
return True
|
|
||||||
return False
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
keys_to_delete = self.redis.keys(":1:outpost_*")
|
|
||||||
self.redis.delete(*keys_to_delete)
|
|
|
@ -204,7 +204,11 @@ class OutpostState:
|
||||||
def for_channel(outpost: Outpost, channel: str) -> "OutpostState":
|
def for_channel(outpost: Outpost, channel: str) -> "OutpostState":
|
||||||
"""Get state for a single channel"""
|
"""Get state for a single channel"""
|
||||||
key = f"{outpost.state_cache_prefix}_{channel}"
|
key = f"{outpost.state_cache_prefix}_{channel}"
|
||||||
data = cache.get(key, {"uid": channel})
|
default_data = {"uid": channel}
|
||||||
|
data = cache.get(key, default_data)
|
||||||
|
if isinstance(data, str):
|
||||||
|
cache.delete(key)
|
||||||
|
data = default_data
|
||||||
state = from_dict(OutpostState, data)
|
state = from_dict(OutpostState, data)
|
||||||
state.uid = channel
|
state.uid = channel
|
||||||
# pylint: disable=protected-access
|
# pylint: disable=protected-access
|
||||||
|
|
Reference in a new issue