remove references to OpenStackDriver and OpenStackClient outside of OpenStackManager
[plstackapi.git] / plstackapi / importer / plclassic / slice_importer.py
1 from plstackapi.core.models import Slice
2
3 class SliceImporter:
4
5     def __init__(self, api):
6         self.api = api
7         self.remote_slices = {}
8         self.local_slices = {}
9
10     def run(self, remote_sites={}, local_sites={}):
11         if not remote_sites:
12             sites = self.api.GetSites({'peer_id': None})
13             for site in sites:
14                 remote_sites[site['site_id']] = site
15         
16
17         if not local_sites:
18             from plstackapi.core.models import Site
19             sites = Site.objects.all()
20             for site in sites:
21                 local_sites[site.login_base] = site            
22
23         db_slices = Slice.objects.all()
24         for db_slice in db_slices:
25             self.local_slices[db_slice.name] = db_slice
26         print "%s local slices" % len(db_slices)
27
28         slices = self.api.GetSlices({'peer_id': None})
29         print "%s remote slices" % len(slices)
30         count = 0 
31         for slice in slices:
32             self.remote_slices[slice['slice_id']] = slice
33             if slice['name'] not in self.local_slices:
34                 site = local_sites[remote_sites[slice['site_id']]['login_base']]
35                 new_slice = Slice(name=slice['name'],
36                                    instantiation=slice['instantiation'],
37                                    omf_friendly = False,
38                                    description = slice['description'],
39                                    slice_url = slice['url'],
40                                    site = site)
41                 new_slice.save()
42                 count += 1
43                 self.local_slices[new_slice.name] = new_slice
44         print "Imported %s slices" % count
45
46           
47