def create(self, name = None): xos_args = self.get_xos_args(name=name) sliver = Sliver(**xos_args) sliver.caller = self.user sliver.save() self.info("Created Sliver '%s' on node '%s' using flavor '%s' and image '%s'" % (str(sliver), str(sliver.node), str(sliver.flavor), str(sliver.image)))
def save_site_allocation(self, noAct=False, reset=False): print "save_site_allocation, reset=", reset if (not self._site_allocation): # Must be a sliver that was just created, and has not site_allocation # field. return all_slice_slivers = self.slivers.all() for site_name in self._site_allocation.keys(): desired_allocation = self._site_allocation[site_name] # make a list of the slivers for this site slivers = [] for sliver in all_slice_slivers: if sliver.node.site_deployment.site.name == site_name: slivers.append(sliver) # delete extra slivers while (reset and len(slivers) > 0) or (len(slivers) > desired_allocation): sliver = slivers.pop() if (not noAct): print "deleting sliver", sliver sliver.delete() else: print "would delete sliver", sliver # add more slivers if (len(slivers) < desired_allocation): site = Site.objects.get(name=site_name) nodes = self.get_node_allocation([site]) if (not nodes): raise APIException(detail="no nodes in site %s" % site_name) while (len(slivers) < desired_allocation): # pick the least allocated node nodes = sorted(nodes, key=attrgetter("sliverCount")) node = nodes[0] sliver = Sliver(name=node.name, slice=self, node=node, image=self.default_image, flavor=self.default_flavor, creator=self.creator, deployment=node.site_deployment.deployment) sliver.caller = self.caller slivers.append(sliver) if (not noAct): print "added sliver", sliver sliver.save() else: print "would add sliver", sliver node.sliverCount = node.sliverCount + 1
def save_site_allocation(self, noAct = False, reset=False): print "save_site_allocation, reset=",reset if (not self._site_allocation): # Must be a sliver that was just created, and has not site_allocation # field. return all_slice_slivers = self.slivers.all() for site_name in self._site_allocation.keys(): desired_allocation = self._site_allocation[site_name] # make a list of the slivers for this site slivers = [] for sliver in all_slice_slivers: if sliver.node.site_deployment.site.name == site_name: slivers.append(sliver) # delete extra slivers while (reset and len(slivers)>0) or (len(slivers) > desired_allocation): sliver = slivers.pop() if (not noAct): print "deleting sliver", sliver sliver.delete() else: print "would delete sliver", sliver # add more slivers if (len(slivers) < desired_allocation): site = Site.objects.get(name = site_name) nodes = self.get_node_allocation([site]) if (not nodes): raise APIException(detail="no nodes in site %s" % site_name) while (len(slivers) < desired_allocation): # pick the least allocated node nodes = sorted(nodes, key=attrgetter("sliverCount")) node = nodes[0] sliver = Sliver(name=node.name, slice=self, node=node, image = self.default_image, flavor = self.default_flavor, creator = self.creator, deployment = node.site_deployment.deployment) sliver.caller = self.caller slivers.append(sliver) if (not noAct): print "added sliver", sliver sliver.save() else: print "would add sliver", sliver node.sliverCount = node.sliverCount + 1
def create(self, name=None, index=None): xos_args = self.get_xos_args(name=name, index=index) sliver = Sliver(**xos_args) sliver.caller = self.user sliver.no_sync = True sliver.save() self.deferred_sync.append(sliver) self.info( "Created Sliver '%s' on node '%s' using flavor '%s' and image '%s'" % (str(sliver), str(sliver.node), str( sliver.flavor), str(sliver.image)))