blob: 0db9136ecdf991e389461f6c47bb0118aff32f62 [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
15
16 if not local_sites:
17 from models import Site
18 sites = Site.objects.all()
19 for site in sites:
20 local_sites[site.login_base] = site
21
Tony Mackf593dba2013-03-24 13:17:43 -040022 db_slices = Slice.objects.all()
Tony Mack743ddf22013-04-02 07:36:25 -040023 for db_slice in db_slices:
24 self.local_slices[db_slice.name] = db_slice
25
26 slices = api.GetSlices()
Tony Mackf1afe392013-04-02 07:40:38 -040027 count = 0
Tony Mackf593dba2013-03-24 13:17:43 -040028 for slice in slices:
Tony Mack743ddf22013-04-02 07:36:25 -040029 self.remote_slice[slice['slice_id']] = slice
30 if slice['name'] not in self.local_slices:
31 site = local_sites[remote_sites[slice['site_id']]['login_base']]
Tony Mackf593dba2013-03-24 13:17:43 -040032 new_slices = Slice(name=slice['name'],
33 instantiation=slice['instantiation'],
34 omf_friendly = False,
35 description = slice['description'],
Tony Mack743ddf22013-04-02 07:36:25 -040036 slice_url = slice['url'],
37 site = site)
38 new_slice.save()
Tony Mackf1afe392013-04-02 07:40:38 -040039 count += 1
Tony Mack743ddf22013-04-02 07:36:25 -040040 self.local_slices[new_slice.name] = new_slice
Tony Mackf1afe392013-04-02 07:40:38 -040041 print "Imported %s slices" % count
Tony Mackf593dba2013-03-24 13:17:43 -040042
43
44