mirror of
https://github.com/avatao-content/baseimage-tutorial-framework
synced 2024-11-25 12:11:33 +00:00
Fix initialization issues with DirectorySnapshottingEH
This commit is contained in:
parent
e383be0149
commit
088a1cefc5
@ -5,6 +5,7 @@ from os.path import join as joinpath
|
|||||||
from os.path import basename
|
from os.path import basename
|
||||||
from os import makedirs
|
from os import makedirs
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
from glob import glob
|
||||||
|
|
||||||
from dateutil import parser as dateparser
|
from dateutil import parser as dateparser
|
||||||
|
|
||||||
@ -29,13 +30,21 @@ class DirectorySnapshottingEventHandler(EventHandlerBase):
|
|||||||
|
|
||||||
def init_snapshot_providers(self, directories):
|
def init_snapshot_providers(self, directories):
|
||||||
for directory in directories:
|
for directory in directories:
|
||||||
git_dir = joinpath(
|
git_dir = self.init_git_dir(directory)
|
||||||
TFWENV.SNAPSHOTS_DIR,
|
|
||||||
f'{basename(directory)}-{str(uuid4())}'
|
|
||||||
)
|
|
||||||
makedirs(git_dir, exist_ok=True)
|
|
||||||
self.snapshot_providers[directory] = SnapshotProvider(directory, git_dir)
|
self.snapshot_providers[directory] = SnapshotProvider(directory, git_dir)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def init_git_dir(directory):
|
||||||
|
git_dir_prefix = joinpath(
|
||||||
|
TFWENV.SNAPSHOTS_DIR,
|
||||||
|
f'{basename(directory)}-'
|
||||||
|
)
|
||||||
|
potential_dirs = glob(f'{git_dir_prefix}*')
|
||||||
|
|
||||||
|
git_dir = potential_dirs[0] if potential_dirs else f'{git_dir_prefix}{str(uuid4())}'
|
||||||
|
makedirs(git_dir, exist_ok=True)
|
||||||
|
return git_dir
|
||||||
|
|
||||||
def handle_event(self, message):
|
def handle_event(self, message):
|
||||||
try:
|
try:
|
||||||
data = message['data']
|
data = message['data']
|
||||||
@ -45,12 +54,18 @@ class DirectorySnapshottingEventHandler(EventHandlerBase):
|
|||||||
LOG.error('IGNORING MESSAGE: Invalid message received: %s', message)
|
LOG.error('IGNORING MESSAGE: Invalid message received: %s', message)
|
||||||
|
|
||||||
def handle_take_snapshot(self, data):
|
def handle_take_snapshot(self, data):
|
||||||
|
LOG.debug('Taking snapshots of directories %s', self.snapshot_providers.keys())
|
||||||
for provider in self.snapshot_providers.values():
|
for provider in self.snapshot_providers.values():
|
||||||
provider.take_snapshot()
|
provider.take_snapshot()
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def handle_restore_snapshot(self, data):
|
def handle_restore_snapshot(self, data):
|
||||||
date = dateparser.parse(data['value'])
|
date = dateparser.parse(data['value'])
|
||||||
|
LOG.debug(
|
||||||
|
'Restoring snapshots (@ %s) of directories %s',
|
||||||
|
date,
|
||||||
|
self.snapshot_providers.keys()
|
||||||
|
)
|
||||||
for provider in self.snapshot_providers.values():
|
for provider in self.snapshot_providers.values():
|
||||||
provider.restore_snapshot(date)
|
provider.restore_snapshot(date)
|
||||||
return data
|
return data
|
||||||
|
@ -5,7 +5,6 @@ import re
|
|||||||
from subprocess import run, CalledProcessError, PIPE
|
from subprocess import run, CalledProcessError, PIPE
|
||||||
from getpass import getuser
|
from getpass import getuser
|
||||||
from os.path import isdir
|
from os.path import isdir
|
||||||
from datetime import datetime
|
|
||||||
from uuid import uuid4
|
from uuid import uuid4
|
||||||
|
|
||||||
from dateutil import parser as dateparser
|
from dateutil import parser as dateparser
|
||||||
|
Loading…
Reference in New Issue
Block a user