update importers
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Tue, 2 Apr 2013 11:36:25 +0000 (07:36 -0400)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Tue, 2 Apr 2013 11:36:25 +0000 (07:36 -0400)
plstackapi/importer/plclassic/importer.py
plstackapi/importer/plclassic/role_importer.py
plstackapi/importer/plclassic/site_importer.py
plstackapi/importer/plclassic/slice_importer.py
plstackapi/importer/plclassic/sliver_importer.py
plstackapi/importer/plclassic/user_importer.py
setup.py

index 3a2113f..4cf5fb9 100644 (file)
@@ -1,9 +1,9 @@
 import xmlrpclib
-from importer.planetstack.role_importer import RoleImporter
-from importer.planetstack.site_importer import SiteImporter
-from importer.planetstack.user_importer import UserImporter
-from importer.planetstack.slice_importer import SliceImporter
-from importer.planetstack.sliver_importer import SliverImporter
+from plstackapi.importer.plclassic.role_importer import RoleImporter
+from plstackapi.importer.plclassic.site_importer import SiteImporter
+from plstackapi.importer.plclassic.user_importer import UserImporter
+from plstackapi.importer.plclassic.slice_importer import SliceImporter
+from plstackapi.importer.plclassic.sliver_importer import SliverImporter
 
 
 class Call:
@@ -28,12 +28,12 @@ class API():
 class Importer: 
 
     def __init__(self):
-        self.api = API()
-        self.roles = RoleImporter(self)
-        self.sites = SiteImporter(self)
-        self.users = UserImporter(self)
-        self.slices = SliceImporter(self)
-        self.slivers = SliverImporter(self)
+        api = API()
+        self.roles = RoleImporter(api)
+        self.sites = SiteImporter(api)
+        self.slices = SliceImporter(api, remote_sites=self.sites.remote_sites, local_sites=self.sites.local_sites)
+        self.users = UserImporter(api)
+        self.slivers = SliverImporter(api)
 
     def run(self):
         self.roles.run()
index 7404ce3..107587a 100644 (file)
@@ -1,21 +1,9 @@
-from PLC.Roles import Roles
-from model import Role
-
 class RoleImporter:
 
-    def __init__(self, importer):
-        self.importer = importer
-        self.roles = {}
+    def __init__(self, api):
+        self.api = api
 
     def run(self):
-        roles = self.importer.api.GetRoles()
-        db_roles =  Role.objects.all()
-        db_roles_list = [db_role['name'] for db_role in db_roles]
-        for role in roles:
-            if role['name'] not in db_roles_list:
-                new_role = Role(name=role['name'])
-                new_role.save()
-            self.roles[role['role_id']] = role
 
-          
+         return 
 
index efd3933..c7bdf21 100644 (file)
@@ -1,18 +1,21 @@
-from PLC.Sites import Sites
-from models import Site
+from plstackapi.core.models import Site
 
 class SiteImporter:
 
-    def __init__(self, importer):
-        self.importer = importer
-        self.sites = {}
+    def __init__(self, api):
+        self.api = api
+        self.remote_sites = {}
+        self.local_sites = {}
 
     def run(self):
-        sites = Sites(self.importer.api)
         db_sites = Site.objects.all()
-        db_site_names = [s['login_base'] for s in db_sites]         
+        for db_site in db_sites:
+            self.local_sites[db_site.login_base] = db_site
+
+        sites = self.api.GetSites()
         for site in sites:
-            if site['login_base'] not in db_site_names:
+            self.remote_sites[site['site_id']] = site 
+            if site['login_base'] not in self.local_sites:
                 new_site = Site(name=site['name'],
                                 site_url=site['url'],
                                 enabled=site['enabled'],
@@ -21,7 +24,4 @@ class SiteImporter:
                                 is_public=site['is_public'],
                                 abbreviated_name=site['abbreviated_name'])
                 new_site.save()
-            self.sites[site['site_id']] = site
-
-          
-
+                self.local_sites[new_site.login_base] = new_site
index 02247f1..4f7504d 100644 (file)
@@ -1,25 +1,41 @@
-from PLC.Slices import Slices
-from models import Slice
+from plstackapi.core.models import Slice
 
 class SliceImporter:
 
-    def __init__(self, importer):
-        self.importer = importer
-        self.slices = {}
+    def __init__(self, api):
+        self.api = api
+        self.remote_slices = {}
+        self.local_slices = {}
+
+    def run(self, remote_sites={}, local_sites={}):
+        if not remote_sites:
+            sites = self.api.GetSites()
+            for site in sites:
+                remote_sites[site['site_id']] = site
+
+        if not local_sites:
+            from models import Site
+            sites = Site.objects.all()
+            for site in sites:
+                local_sites[site.login_base] = site            
 
-    def run(self):
-        slices = Slices(self.importer.api)
         db_slices = Slice.objects.all()
-        slice_names = [s['name'] for s in db_slices]
+        for db_slice in db_slices:
+            self.local_slices[db_slice.name] = db_slice
+
+        slices = api.GetSlices()
         for slice in slices:
-            if slice['name'] not in slice_names:
+            self.remote_slice[slice['slice_id']] = slice
+            if slice['name'] not in self.local_slices:
+                site = local_sites[remote_sites[slice['site_id']]['login_base']]
                 new_slices = Slice(name=slice['name'],
                                    instantiation=slice['instantiation'],
                                    omf_friendly = False,
                                    description = slice['description'],
-                                   slice_url = slice['url'])
-                new_slice.save();
-            self.slices[slice['slice_id']] = slice
+                                   slice_url = slice['url'],
+                                   site = site)
+                new_slice.save()
+                self.local_slices[new_slice.name] = new_slice
 
           
 
index 3bce228..3f7912f 100644 (file)
@@ -2,13 +2,8 @@ from PLC.Nodes import Nodes
 
 class SliverImporter:
 
-    def __init__(self, importer):
-        self.importer = importer
-        self.slivers = {}
+    def __init__(self, api):
+        self.api = api
 
     def run(self):
-        nodes = Nodes(self.importer.api)
-        for node in nodes:
-            slice_id in node['slice_ids']:
-                self.slivers[(slice['slice_id'], node['node_id'])] = slice          
-
+        return
index 7476967..21d74b6 100644 (file)
@@ -1,28 +1,12 @@
-from PLC.Persons import Persons
-from models import User
 
 class UserImporter:
 
-    def __init__(self, importer):
-        self.importer = importer
+    def __init__(self, api):
+        self.api = api
         self.users = {}
 
     def run(self):
-        users = Persons(self.importer.api)
-        db_users = User.objects.all()
-        usernames = [u['email'] for u in db_users]     
-        for user in users:
-            if user['email'] not in usernames:
-                new_user = User(firstname=user['first_name'],
-                                lastname=user['last_name'],
-                                email=user['email'],
-                                phone=user['phone'],
-                                user_url = user['url'],
-                                site = user['sites_ids'][0])
-                new_user.save()
-                self.save_site_privs(user) 
-                self.save_slice_privs(user) 
-            self.users[user['person_id']] = user
+        users = self.api.GetPersons()
 
     def save_site_privs(self, user):
         # update site roles
index 12e94ec..5a29e4a 100644 (file)
--- a/setup.py
+++ b/setup.py
@@ -8,4 +8,5 @@ setup(name='plstackapi',
       scripts=['plstackapi/plstackapi-debug-server.py'],
       data_files=[
         ('/etc/planetstack/', ['config/plstackapi_config']),
+        ('/opt/planetstack/', glob('plstackapi/planetstack/*')),
         ])