X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=planetstack%2Fcore%2Fmodels%2Fsite.py;h=cc2ad0314871a8450e1572a090b5d8dc4da1fc19;hb=fe290f49559b1e19b9251b83877862f70679bf86;hp=ae07fc028226d3c96750d1e37281be4b49274dc6;hpb=67626f8405423db3fc2ff69c1d08776a5d92a082;p=plstackapi.git diff --git a/planetstack/core/models/site.py b/planetstack/core/models/site.py index ae07fc0..cc2ad03 100644 --- a/planetstack/core/models/site.py +++ b/planetstack/core/models/site.py @@ -105,7 +105,7 @@ class Site(PlCoreBase): abbreviated_name = models.CharField(max_length=80) #deployments = models.ManyToManyField('Deployment', blank=True, related_name='sites') - deployments = models.ManyToManyField('Deployment', through='SiteDeployments', blank=True, help_text="Select which sites are allowed to host nodes in this deployment", related_name='sites') + deployments = models.ManyToManyField('Deployment', through='SiteDeployment', blank=True, help_text="Select which sites are allowed to host nodes in this deployment", related_name='sites') tags = generic.GenericRelation(Tag) def __unicode__(self): return u'%s' % (self.name) @@ -216,72 +216,88 @@ class Deployment(PlCoreBase): def __unicode__(self): return u'%s' % (self.name) -class ControllerRole(PlCoreBase): - #objects = ControllerLinkManager() - #deleted_objects = ControllerLinkDeletionManager() - +class DeploymentRole(PlCoreBase): + #objects = DeploymentLinkManager() + #deleted_objects = DeploymentLinkDeletionManager() ROLE_CHOICES = (('admin','Admin'),) role = models.CharField(choices=ROLE_CHOICES, unique=True, max_length=30) def __unicode__(self): return u'%s' % (self.role) -class ControllerPrivilege(PlCoreBase): - objects = ControllerLinkManager() - deleted_objects = ControllerLinkDeletionManager() +class DeploymentPrivilege(PlCoreBase): + #objects = DeploymentLinkManager() + #deleted_objects = DeploymentLinkDeletionManager() - user = models.ForeignKey('User', related_name='controllerprivileges') - controller = models.ForeignKey('Controller', related_name='controllerprivileges') - role = models.ForeignKey('ControllerRole',related_name='controllerprivileges') + user = models.ForeignKey('User', related_name='deploymentprivileges') + deployment = models.ForeignKey('Deployment', related_name='deploymentprivileges') + role = models.ForeignKey('DeploymentRole',related_name='deploymentprivileges') - def __unicode__(self): return u'%s %s %s' % (self.controller, self.user, self.role) + def __unicode__(self): return u'%s %s %s' % (self.deployment, self.user, self.role) def can_update(self, user): if user.is_readonly: return False if user.is_admin: return True - cprivs = ControllerPrivilege.objects.filter(user=user) - for cpriv in dprivs: - if cpriv.role.role == 'admin': + dprivs = DeploymentPrivilege.objects.filter(user=user) + for dpriv in dprivs: + if dpriv.role.role == 'admin': return True return False @staticmethod def select_by_user(user): if user.is_admin: - qs = ControllerPrivilege.objects.all() + qs = DeploymentPrivilege.objects.all() else: - cpriv_ids = [cp.id for cp in ControllerPrivilege.objects.filter(user=user)] - qs = ControllerPrivilege.objects.filter(id__in=cpriv_ids) - return qs + dpriv_ids = [dp.id for dp in DeploymentPrivilege.objects.filter(user=user)] + qs = DeploymentPrivilege.objects.filter(id__in=dpriv_ids) + return qs -class SiteDeployments(PlCoreBase): +class ControllerRole(PlCoreBase): #objects = ControllerLinkManager() #deleted_objects = ControllerLinkDeletionManager() - objects = ControllerManager() - deleted_objects = ControllerDeletionManager() - site = models.ForeignKey(Site,related_name='sitedeployments') - deployment = models.ForeignKey(Deployment,related_name='sitedeployments') - availability_zone = models.CharField(max_length=200, null=True, blank=True, help_text="OpenStack availability zone") - #tenant_id = models.CharField(null=True, blank=True, max_length=200, help_text="Keystone tenant id") - def __unicode__(self): return u'%s %s' % (self.deployment, self.site) + ROLE_CHOICES = (('admin','Admin'),) + role = models.CharField(choices=ROLE_CHOICES, unique=True, max_length=30) + + def __unicode__(self): return u'%s' % (self.role) class Controller(PlCoreBase): - site_deployment = models.ForeignKey(SiteDeployments,related_name='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") + objects = ControllerManager() + deleted_objects = ControllerDeletionManager() + + name = models.CharField(max_length=200, unique=True, help_text="Name of the Controller") + backend_type = models.CharField(max_length=200, help_text="Type of compute controller, e.g. EC2, OpenStack, or OpenStack version") + version = models.CharField(max_length=200, help_text="Controller 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") admin_password = models.CharField(max_length=200, null=True, blank=True, help_text="Password of theadmin user at this controller") admin_tenant = models.CharField(max_length=200, null=True, blank=True, help_text="Name of the tenant the admin user belongs to") - def __unicode__(self): return u'%s %s' % (self.site_deployment, self.backend_type) + def __unicode__(self): return u'%s %s %s' % (self.name, self.backend_type, self.version) -class ControllerSites(PlCoreBase): + def can_update(self, user): + if user.is_readonly: + return False + if user.is_admin: + return True + return False + +class SiteDeployment(PlCoreBase): objects = ControllerLinkManager() - deleted_objects = ControllerLinkDeletionManager() + deleted_objects = ControllerLinkDeletionManager() + + site = models.ForeignKey(Site,related_name='sitedeployments') + deployment = models.ForeignKey(Deployment,related_name='sitedeployments') + controller = models.ForeignKey(Controller, null=True, blank=True, related_name='sitedeployments') + availability_zone = models.CharField(max_length=200, null=True, blank=True, help_text="OpenStack availability zone") - controller = models.ForeignKey(Controller, related_name='controllersites') - site_deployment = models.ForeignKey(SiteDeployments, related_name='controllersites') - tenant_id = models.CharField(null=True, blank=True, max_length=200, help_text="Keystone tenant id") + def __unicode__(self): return u'%s %s' % (self.deployment, self.site) + +class ControllerSite(PlCoreBase): + + site = models.ForeignKey(Site,related_name='controllersite') + controller = models.ForeignKey(Controller, null=True, blank=True, related_name='controllersite') + tenant_id = models.CharField(null=True, blank=True, max_length=200, db_index=True, help_text="Keystone tenant id")