3 from django.db.models import F, Q
4 from planetstack.config import Config
5 from observer.openstacksyncstep import OpenStackSyncStep
6 from core.models.image import Image
8 class SyncImages(OpenStackSyncStep):
12 def fetch_pending(self, deleted):
13 # Images come from the back end
14 # You can't delete them
18 # get list of images on disk
19 images_path = Config().observer_images_directory
21 for f in os.listdir(images_path):
22 if os.path.isfile(os.path.join(images_path ,f)):
23 available_images[f] = os.path.join(images_path ,f)
25 images = Image.objects.all()
26 image_names = [image.name for image in images]
28 for image_name in available_images:
29 #remove file extension
30 clean_name = ".".join(image_name.split('.')[:-1])
31 if clean_name not in image_names:
32 image = Image(name=clean_name,
34 container_format='bare',
35 path = available_images[image_name])
39 return Image.objects.filter(Q(enacted__lt=F('updated')) | Q(enacted=None))
41 def sync_record(self, image):