bug fixes
Tony Mack [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):
-    site_deployments = forms.ModelMultipleChoiceField(
-        queryset=SiteDeployment.objects.all(),
+    sites = forms.ModelMultipleChoiceField(
+        queryset=Site.objects.all(),
         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(
-            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:
-            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
@@ -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...
-            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()
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")
-    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")
index a49c868..7d96264 100644 (file)
@@ -1,6 +1,6 @@
-from core.models import *
 
 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]
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:
-            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
index 5e2adad..b7b16ad 100644 (file)
@@ -1,30 +1,12 @@
-from core.models import *
-
 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_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 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)
 
-class SyncControllerSlice(OpenStackSyncStep):
+class SyncControllerSlices(OpenStackSyncStep):
     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 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)
 
-class SyncControllerUser(OpenStackSyncStep):
+class SyncControllerUsers(OpenStackSyncStep):
     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:
-            roles.append('admin')
+            roles.append('Admin')
    
        # setup user home site roles at controller 
         if not controller_user.user.site: