1 from core.models.slice import Slice, SlicePrivilege
2 from plus import PlusObjectMixin
4 class SlicePlus(Slice, PlusObjectMixin):
8 def getSliceInfo(self, user=None):
12 for sliver in self.slivers.all():
13 site = sliver.node.site_deployment.site
14 deployment = sliver.node.site_deployment.deployment
15 used_sites[site.name] = used_sites.get(site.name, 0) + 1
16 used_deployments[deployment.name] = used_deployments.get(deployment.name, 0) + 1
17 sliverCount = sliverCount + 1
21 roles = [x.role.role for x in self.sliceprivileges.filter(user=user)]
23 return {"sitesUsed": used_sites,
24 "deploymentsUsed": used_deployments,
25 "sliverCount": sliverCount,
26 "siteCount": len(used_sites.keys()),
30 def site_allocation(self):
31 return self.getSliceInfo()["sitesUsed"]
33 @site_allocation.setter
34 def site_allocation(self, value):
35 print "XXX set sitesUsed to", value
40 for priv in SlicePrivilege.objects.filter(slice=self):
41 if not (priv.user.id in user_ids):
42 user_ids.append(priv.user.id)
46 def users(self, value):
47 print "XXX set users to", value
50 def network_ports(self):
51 # XXX this assumes there is only one network that can have ports bound
52 # to it for a given slice. This is intended for the tenant view, which
53 # will obey this field.
55 for networkSlice in self.networkslices.all():
56 network = networkSlice.network
58 networkPorts = network.ports
63 def network_ports(self, value):
64 print "XXX set networkPorts to", value
67 def select_by_user(user):
69 qs = SlicePlus.objects.all()
71 slice_ids = [sp.slice.id for sp in SlicePrivilege.objects.filter(user=user)]
72 qs = SlicePlus.objects.filter(id__in=slice_ids)