This tree was mixed up, with an old version of the EC2 Observer. This
[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
16                 deployment = Deployment.objects.filter(Q(name="Amazon EC2"))[0]
17                 current_site_deployments = SiteDeployments.objects.filter(Q(deployment=deployment))
18
19                 zone_ret = aws_run('ec2 describe-availability-zones')
20                 zones = zone_ret['AvailabilityZones']
21
22                 available_sites = [zone['ZoneName'] for zone in zones]
23                 site_names = [sd.site.name for sd in current_site_deployments]
24
25                 new_site_names = list(set(available_sites) - set(site_names))
26
27                 new_sites = []
28                 for s in new_site_names:
29                         site = Site(name=s,
30                                                 login_base=s,
31                                                 site_url="www.amazon.com",
32                                                 enabled=True,
33                                                 is_public=True,
34                                                 abbreviated_name=s)
35                         new_sites.append(site)
36                 
37                 return new_sites
38
39         def sync_record(self, site):
40                 site.save()
41