added refresh()
authorTony Mack <tmack@paris.CS.Princeton.EDU>
Sun, 10 Mar 2013 00:54:06 +0000 (19:54 -0500)
committerTony Mack <tmack@paris.CS.Princeton.EDU>
Sun, 10 Mar 2013 00:54:06 +0000 (19:54 -0500)
PLC/Sites.py
PLC/Slices.py

index 981a598..39bf2ed 100644 (file)
@@ -222,7 +222,7 @@ class Sites(list):
         """
         # get current sites
         sites = Site().select()
-        login_bases = [site['login_base'] for site in sites]
+        login_bases = [site.login_base for site in sites]
 
         # get current tenants
         tenants = api.client_shell.keystone.tenants.list()
index bbc594a..928cbd2 100644 (file)
@@ -213,3 +213,31 @@ class Slices(list):
                 slice['slice_tag_ids'] = [rec.slice_tag_id for rec in slice_tags]
                 
             self.append(slice)
+
+    def refresh(self, api):
+        """
+        Import tenants from keystone.
+        """
+        # get current slices
+        slices = Slice().select()
+        slice_names = [slice.name for slice in slices]
+
+        # get current tenants
+        tenants = api.client_shell.keystone.tenants.list()
+
+        # add tenants that dont already exist
+        for tenant in tenants:
+            # site tenants should not contain '_'
+            if '_' in tenant.name and tenant.name not in slice_names:
+                description = tenant.description
+                if not description: description  = tenant.name
+                slice = Slice(api, {'name': tenant.name,
+                                    'tenant_id': tenant.id,
+                                    'enabled': tenant.enabled,
+                                    'description': description
+                                    'is_public': True})
+                try:
+                    slice.sync()
+                except:
+                    # slice may have a login base prefix that doesn't exist yet.
+                    pass