blob: 45ff6e6dc9207f710a43ea5940b70960175f936a [file] [log] [blame]
Tony Mack743ddf22013-04-02 07:36:25 -04001from plstackapi.core.models import Slice
Tony Mackf593dba2013-03-24 13:17:43 -04002
3class SliceImporter:
4
Tony Mack743ddf22013-04-02 07:36:25 -04005 def __init__(self, api):
6 self.api = api
7 self.remote_slices = {}
8 self.local_slices = {}
Tony Mackf593dba2013-03-24 13:17:43 -04009
Tony Mack743ddf22013-04-02 07:36:25 -040010 def run(self, remote_sites={}, local_sites={}):
11 if not remote_sites:
12 sites = self.api.GetSites()
13 for site in sites:
14 remote_sites[site['site_id']] = site
Tony Mackdd12c682013-04-02 10:15:27 -040015
Tony Mack743ddf22013-04-02 07:36:25 -040016
17 if not local_sites:
18 from models import Site
19 sites = Site.objects.all()
20 for site in sites:
21 local_sites[site.login_base] = site
22
Tony Mackf593dba2013-03-24 13:17:43 -040023 db_slices = Slice.objects.all()
Tony Mack743ddf22013-04-02 07:36:25 -040024 for db_slice in db_slices:
25 self.local_slices[db_slice.name] = db_slice
Tony Mackdd12c682013-04-02 10:15:27 -040026 print "%s local slices" % len(db_slices)
Tony Mack743ddf22013-04-02 07:36:25 -040027
28 slices = api.GetSlices()
Tony Mackd9f8d2e2013-04-02 10:18:48 -040029 print "%s remote sites" % len(slices)
Tony Mackf1afe392013-04-02 07:40:38 -040030 count = 0
Tony Mackf593dba2013-03-24 13:17:43 -040031 for slice in slices:
Tony Mack743ddf22013-04-02 07:36:25 -040032 self.remote_slice[slice['slice_id']] = slice
33 if slice['name'] not in self.local_slices:
34 site = local_sites[remote_sites[slice['site_id']]['login_base']]
Tony Mackf593dba2013-03-24 13:17:43 -040035 new_slices = Slice(name=slice['name'],
36 instantiation=slice['instantiation'],
37 omf_friendly = False,
38 description = slice['description'],
Tony Mack743ddf22013-04-02 07:36:25 -040039 slice_url = slice['url'],
40 site = site)
41 new_slice.save()
Tony Mackf1afe392013-04-02 07:40:38 -040042 count += 1
Tony Mack743ddf22013-04-02 07:36:25 -040043 self.local_slices[new_slice.name] = new_slice
Tony Mackf1afe392013-04-02 07:40:38 -040044 print "Imported %s slices" % count
Tony Mackf593dba2013-03-24 13:17:43 -040045
46
47