bug fixes
authorTony Mack <tmack@tux.cs.princeton.edu>
Tue, 6 Jan 2015 22:49:25 +0000 (17:49 -0500)
committerTony Mack <tmack@tux.cs.princeton.edu>
Tue, 6 Jan 2015 22:49:25 +0000 (17:49 -0500)
planetstack/core/admin.py
planetstack/core/models/site.py
planetstack/model_policies/model_policy_Site.py
planetstack/model_policies/model_policy_Slice.py
planetstack/model_policies/model_policy_User.py
planetstack/openstack_observer/steps/__init__.py
planetstack/openstack_observer/steps/sync_controller_slices.py
planetstack/openstack_observer/steps/sync_controller_users.py

index b0f0446..4846a28 100644 (file)
@@ -662,12 +662,12 @@ class DeploymentAdmin(PlanetStackBaseAdmin):
         return AdminFormMetaClass
 
 class ControllerAdminForm(forms.ModelForm):
         return AdminFormMetaClass
 
 class ControllerAdminForm(forms.ModelForm):
-    site_deployments = forms.ModelMultipleChoiceField(
-        queryset=SiteDeployment.objects.all(),
+    sites = forms.ModelMultipleChoiceField(
+        queryset=Site.objects.all(),
         required=False,
         required=False,
-        help_text="Select which sites deployments are managed by this controller",
+        help_text="Select which sites are managed by this controller",
         widget=FilteredSelectMultiple(
         widget=FilteredSelectMultiple(
-            verbose_name=('Site Deployments'), is_stacked=False
+            verbose_name=('Sites'), is_stacked=False
         )
     )
 
         )
     )
 
@@ -679,7 +679,7 @@ class ControllerAdminForm(forms.ModelForm):
         super(ControllerAdminForm, self).__init__(*args, **kwargs)  
 
         if self.instance and self.instance.pk:
         super(ControllerAdminForm, self).__init__(*args, **kwargs)  
 
         if self.instance and self.instance.pk:
-            self.fields['site_deployments'].initial = [x.site_deployment for x in self.instance.controllersitedeployments.all()]
+            self.fields['sites'].initial = [x.site_deployment for x in self.instance.controllersite.all()]
 
     def manipulate_m2m_objs(self, this_obj, selected_objs, all_relations, relation_class, local_attrname, foreign_attrname):
         """ helper function for handling m2m relations from the MultipleChoiceField
 
     def manipulate_m2m_objs(self, this_obj, selected_objs, all_relations, relation_class, local_attrname, foreign_attrname):
         """ helper function for handling m2m relations from the MultipleChoiceField
@@ -717,7 +717,7 @@ class ControllerAdminForm(forms.ModelForm):
             # save_m2m() doesn't seem to work with 'through' relations. So we
             #    create/destroy the through models ourselves. There has to be
             #    a better way...
             # save_m2m() doesn't seem to work with 'through' relations. So we
             #    create/destroy the through models ourselves. There has to be
             #    a better way...
-            self.manipulate_m2m_objs(controller, self.cleaned_data['site_deployments'], controller.controllersitedeployments.all(), ControllerSite, "controller", "site_deployment")
+            self.manipulate_m2m_objs(controller, self.cleaned_data['sites'], controller.controllersite.all(), ControllerSite, "controller", "site")
             pass
        
         self.save_m2m()
             pass
        
         self.save_m2m()
index 6b1f3df..1d46f4c 100644 (file)
@@ -299,7 +299,7 @@ class Controller(PlCoreBase):
     deleted_objects = ControllerDeletionManager()
 
     name = models.CharField(max_length=200, unique=True, help_text="Name of the Controller")
     deleted_objects = ControllerDeletionManager()
 
     name = models.CharField(max_length=200, unique=True, help_text="Name of the Controller")
-    version = models.CharField(max_length=200, unique=True, help_text="Controller version")
+    version = models.CharField(max_length=200, help_text="Controller version")
     backend_type = models.CharField(max_length=200, null=True, blank=True, help_text="Type of compute controller, e.g. EC2, OpenStack, or OpenStack version")
     auth_url = models.CharField(max_length=200, null=True, blank=True, help_text="Auth url for the compute controller")
     admin_user = models.CharField(max_length=200, null=True, blank=True, help_text="Username of an admin user at this controller")
     backend_type = models.CharField(max_length=200, null=True, blank=True, help_text="Type of compute controller, e.g. EC2, OpenStack, or OpenStack version")
     auth_url = models.CharField(max_length=200, null=True, blank=True, help_text="Auth url for the compute controller")
     admin_user = models.CharField(max_length=200, null=True, blank=True, help_text="Username of an admin user at this controller")
index a49c868..7d96264 100644 (file)
@@ -1,6 +1,6 @@
-from core.models import *
 
 def handle(site):
 
 def handle(site):
+    from core.models import Controller, ControllerSite 
     # make sure site has a ControllerSite record for each controller
     ctrl_sites = ControllerSite.objects.filter(site=site)
     existing_controllers = [cs.controller for cs in ctrl_sites]
     # make sure site has a ControllerSite record for each controller
     ctrl_sites = ControllerSite.objects.filter(site=site)
     existing_controllers = [cs.controller for cs in ctrl_sites]
index 37129a3..cc9f2b0 100644 (file)
@@ -8,7 +8,7 @@ def handle(slice):
     all_controllers = Controller.objects.all() 
     for controller in all_controllers:
         if controller not in existing_controllers:
     all_controllers = Controller.objects.all() 
     for controller in all_controllers:
         if controller not in existing_controllers:
-            sd = ControllerSlice(slice=slice, controller=controller_controller)
+            sd = ControllerSlice(slice=slice, controller=controller)
             sd.save()
 
     # make sure slice has at least 1 public and 1 private networkd
             sd.save()
 
     # make sure slice has at least 1 public and 1 private networkd
index 5e2adad..b7b16ad 100644 (file)
@@ -1,30 +1,12 @@
-from core.models import *
-
 def handle(user):
 def handle(user):
-       from core.models import Controller, ControllerSite, ControllerUser
-       from collections import defaultdict
-       ctrl_site_deployments = ControllerSite.objects.all()
-       controller_lookup = defaultdict(list)
-       for ctrl_site_deployment in ctrl_site_deployments:
-               controller_site_lookup[ctrl_site_deployment.site_deployment].append(ctrl_site_deployment)
-
-       controller_user_lookup = defaultdict(list)
-       for controller_user in ControllerUser.objects.all():
-               controller_user_lookup[controller_user.user].append(controller_user.controller)
-   
-       if user.is_admin:
-               # admins should have an account at all controllers
-               expected_controllers = controllers
-       else:
-               # normal users should have an account at their site's controllers
-               #expected_controllers = controller_site_lookup[user.site]
-               # users are added to all controllers for now
-               expected_controllers = controllers        
-
-       for expected_controller in expected_controllers:
-               if not user in controller_user_lookup or \
-                 expected_controller not in controller_user_lookup[user]: 
-                       # add new record
-                       ud = ControllerUser(user=user, controller=expected_controller)
-                       ud.save()    
+    from core.models import Controller, ControllerSite, ControllerUser
+    from collections import defaultdict
+    
+    controller_users = ControllerUser.objects.filter(user=user)
+    existing_controllers = [cu.controller for cu in controller_users]
+    all_controllers = Controller.objects.all()
+    for controller in all_controllers:
+        if controller not in existing_controllers:
+            ctrl_user = ControllerUser(controller=controller, user=user)
+            ctrl_user.save()  
 
 
index f164623..b83322a 100644 (file)
@@ -1 +1,3 @@
 from .sync_controller_sites import SyncControllerSites
 from .sync_controller_sites import SyncControllerSites
+from .sync_controller_slices import SyncControllerSlices
+from .sync_controller_users import SyncControllerUsers
index 24453e3..4487f3a 100644 (file)
@@ -6,13 +6,13 @@ from django.db.models import F, Q
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.slice import Slice, ControllerSlice
 from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.slice import Slice, ControllerSlice
-from core.models.controllerusers import ControllerUser
+from core.models.controlleruser import ControllerUser
 from util.logger import Logger, logging
 from observer.ansible import *
 
 logger = Logger(level=logging.INFO)
 
 from util.logger import Logger, logging
 from observer.ansible import *
 
 logger = Logger(level=logging.INFO)
 
-class SyncControllerSlice(OpenStackSyncStep):
+class SyncControllerSlices(OpenStackSyncStep):
     provides=[ControllerSlice]
     requested_interval=0
 
     provides=[ControllerSlice]
     requested_interval=0
 
index 1ace6db..0c35047 100644 (file)
@@ -6,14 +6,14 @@ from planetstack.config import Config
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.site import Controller, SiteDeployment, SiteDeployment
 from core.models.user import User
 from observer.openstacksyncstep import OpenStackSyncStep
 from core.models.site import Controller, SiteDeployment, SiteDeployment
 from core.models.user import User
-from core.models.controllerusers import ControllerUser
+from core.models.controlleruser import ControllerUser
 from util.logger import Logger, logging
 
 from observer.ansible import *
 
 logger = Logger(level=logging.INFO)
 
 from util.logger import Logger, logging
 
 from observer.ansible import *
 
 logger = Logger(level=logging.INFO)
 
-class SyncControllerUser(OpenStackSyncStep):
+class SyncControllerUsers(OpenStackSyncStep):
     provides=[ControllerUser, User]
     requested_interval=0
 
     provides=[ControllerUser, User]
     requested_interval=0
 
@@ -37,7 +37,7 @@ class SyncControllerUser(OpenStackSyncStep):
         # We must also check if the user should have the admin role                            
        roles = ['user']
         if controller_user.user.is_admin:
         # We must also check if the user should have the admin role                            
        roles = ['user']
         if controller_user.user.is_admin:
-            roles.append('admin')
+            roles.append('Admin')
    
        # setup user home site roles at controller 
         if not controller_user.user.site:
    
        # setup user home site roles at controller 
         if not controller_user.user.site: