0959c71b34ec68088f3fde730f5353b8a4ea8f97
[plstackapi.git] / planetstack / ec2_observer / steps / sync_sites.py
1 import os
2 import base64
3 from django.db.models import F, Q
4 from planetstack.config import Config
5 from ec2_observer.syncstep import SyncStep
6 from core.models.site import *
7 from ec2_observer.awslib import *
8 import pdb
9
10 class SyncSites(SyncStep):
11     provides=[Site]
12     requested_interval=3600
13
14     def fetch_pending(self, deletion):
15         if (deletion):
16             return []
17
18         deployment = Deployment.objects.filter(Q(name="Amazon EC2"))[0]
19         current_site_deployments = SiteDeployment.objects.filter(Q(deployment=deployment))
20
21         zone_ret = aws_run('ec2 describe-availability-zones')
22         zones = zone_ret['AvailabilityZones']
23
24         available_sites = [zone['ZoneName'] for zone in zones]
25         site_names = [sd.site.name for sd in current_site_deployments]
26
27         new_site_names = list(set(available_sites) - set(site_names))
28
29         new_sites = []
30         for s in new_site_names:
31             site = Site(name=s,
32                         login_base=s,
33                         site_url="www.amazon.com",
34                         enabled=True,
35                         is_public=True,
36                         abbreviated_name=s)
37             new_sites.append(site)
38         
39         return new_sites
40
41     def sync_record(self, site):
42         site.save()
43