def run(self, remote_sites={}, local_sites={}): if not remote_sites: sites = self.api.GetSites({'peer_id': None}) for site in sites: remote_sites[site['site_id']] = site if not local_sites: from core.models import Site sites = Site.objects.all() for site in sites: local_sites[site.login_base] = site db_slices = Slice.objects.all() for db_slice in db_slices: self.local_slices[db_slice.name] = db_slice print "%s local slices" % len(db_slices) slices = self.api.GetSlices({'peer_id': None}) print "%s remote slices" % len(slices) count = 0 for slice in slices: self.remote_slices[slice['slice_id']] = slice if slice['name'] not in self.local_slices: site = local_sites[remote_sites[slice['site_id']]['login_base']] new_slice = Slice(name=slice['name'], omf_friendly = False, description = slice['description'], slice_url = slice['url'], site = site) new_slice.save() count += 1 self.local_slices[new_slice.name] = new_slice print "Imported %s slices" % count
def run(self, remote_sites={}, local_sites={}): if not remote_sites: sites = self.api.GetSites({'peer_id': None}) for site in sites: remote_sites[site['site_id']] = site if not local_sites: from core.models import Site sites = Site.objects.all() for site in sites: local_sites[site.login_base] = site db_slices = Slice.objects.all() for db_slice in db_slices: self.local_slices[db_slice.name] = db_slice print "%s local slices" % len(db_slices) slices = self.api.GetSlices({'peer_id': None}) print "%s remote slices" % len(slices) count = 0 for slice in slices: self.remote_slices[slice['slice_id']] = slice if slice['name'] not in self.local_slices: site = local_sites[remote_sites[slice['site_id']] ['login_base']] new_slice = Slice(name=slice['name'], omf_friendly=False, description=slice['description'], slice_url=slice['url'], site=site) new_slice.save() count += 1 self.local_slices[new_slice.name] = new_slice print "Imported %s slices" % count
def create(self): nodetemplate = self.nodetemplate sliceName = nodetemplate.name xos_args = self.get_xos_args() slice = Slice(**xos_args) slice.caller = self.user slice.save() self.postprocess(slice) self.info("Created Slice '%s' on Site '%s'" % (str(slice), str(slice.site)))
def add_slice(auth, fields): user = authenticate(username=auth.get('username'), password=auth.get('password')) auth['tenant'] = user.site.login_base login_base = fields['name'][:fields['name'].find('_')] sites = _get_sites(login_base) if sites: fields['site'] = sites[0] slice = Slice(**fields) slice.os_manager = OpenStackManager(auth=auth, caller=user) slice.save() return slice
def select_by_user(user): if user.is_admin: qs = NetworkSlice.objects.all() else: slice_ids = [s.id for s in Slice.select_by_user(user)] qs = NetworkSlice.objects.filter(id__in=slice_ids) return qs
def select_by_user(user): if user.is_admin: qs = Sliver.objects.all() else: slices = Slice.select_by_user(user) qs = Sliver.objects.filter(slice__in=slices) return qs
def select_by_user(user): if user.is_admin: qs = Instance.objects.all() else: slices = Slice.select_by_user(user) qs = Instance.objects.filter(slice__in=slices) return qs
def test_nat_net(self): slice3Name = self.make_slice_name() slice3 = Slice(name = slice3Name, omf_friendly=True, site=self.testSite, creator=self.testUser) slice3=self.save_and_wait_for_enacted(slice3, nonempty_fields=["tenant_id"]) network3 = Network(name = slice3Name + "-nat", template = self.get_network_template("private-nat"), owner = slice3) # note that router_id will not be filled in for nat-net, since nat-net has no routers network3=self.save_and_wait_for_enacted(network3, nonempty_fields=["network_id", "subnet_id", "subnet"]) network3_slice3 = NetworkSlice(network=network3, slice=slice3) network3_slice3.save() # does not need to be enacted sliver3_1 = Sliver(image = self.testImage, creator=self.testUser, slice=slice3, node=self.testNode, deploymentNetwork=self.testDeployment) sliver3_1=self.save_and_wait_for_enacted(sliver3_1, nonempty_fields=["instance_id", "ip"]) ports = self.wait_for_ports(sliver3_1, count=2) self.verify_network_names(ports, [slice3.name, "nat-net"])
def test_slice2(self): slice2Name = self.make_slice_name() slice2 = Slice(name = slice2Name, omf_friendly=True, site=self.testSite, creator=self.testUser) slice2=self.save_and_wait_for_enacted(slice2, nonempty_fields=["tenant_id"]) network2 = Network(name = slice2Name + "-pvt", template = self.get_network_template("private"), owner = slice2) network2=self.save_and_wait_for_enacted(network2, nonempty_fields=["network_id", "subnet_id", "router_id", "subnet"]) network2_slice2 = NetworkSlice(network=network2, slice=slice2) network2_slice2.save() # does not need to be enacted sliver2_1 = Sliver(image = self.testImage, creator=self.testUser, slice=slice2, node=self.testNode, deploymentNetwork=self.testDeployment) sliver2_1=self.save_and_wait_for_enacted(sliver2_1, nonempty_fields=["instance_id", "ip"]) ports = self.wait_for_ports(sliver2_1, count=2) self.verify_network_names(ports, [slice2.name, network2.name]) self.slice2 = slice2 self.network2 = network2
def select_by_user(user): if user.is_admin: qs = ControllerNetwork.objects.all() else: slices = Slice.select_by_user(user) networks = Network.objects.filter(owner__in=slices) qs = ControllerNetwork.objects.filter(network__in=networks) return qs
def select_by_user(user): if user.is_admin: qs = NetworkSlice.objects.all() else: slice_ids = [s.id for s in Slice.select_by_user(user)] network_ids = [network.id for network in Network.select_by_user(user)] qs = NetworkSlice.objects.filter(Q(slice__in=slice_ids) | Q(network__in=network_ids)) return qs
def select_by_user(user): if user.is_admin: qs = NetworkSlice.objects.all() else: slice_ids = [s.id for s in Slice.select_by_user(user)] network_ids = [ network.id for network in Network.select_by_user(user) ] qs = NetworkSlice.objects.filter( Q(slice__in=slice_ids) | Q(network__in=network_ids)) return qs
def run_instance1(self): slice1Name = self.make_slice_name() slice1 = Slice(name = slice1Name, omf_friendly=True, site=self.testSite, creator=self.testUser) slice1=self.save_and_wait_for_enacted(slice1, nonempty_fields=["tenant_id"]) instance1 = Instance(image = self.testImage, creator=self.testUser, slice=slice1, node=self.testNode, deploymentNetwork=self.testDeployment) instance1=self.save_and_wait_for_enacted(instance1, nonempty_fields=["instance_id", "ip"])
def test_slice1(self): slice1Name = self.make_slice_name() slice1 = Slice(name=slice1Name, omf_friendly=True, site=self.testSite, creator=self.testUser) slice1 = self.save_and_wait_for_enacted(slice1, nonempty_fields=["tenant_id"]) instance1 = Instance(image=self.testImage, creator=self.testUser, slice=slice1, node=self.testNode, deploymentNetwork=self.testDeployment) instance1 = self.save_and_wait_for_enacted( instance1, nonempty_fields=["instance_id", "ip"]) # instance1 should have only one port, its private network ports = self.wait_for_ports(instance1, count=1) self.verify_network_names(ports, [slice1.name]) network1 = Network(name=slice1Name + "-pvt", template=self.get_network_template("private"), owner=slice1) network1 = self.save_and_wait_for_enacted( network1, nonempty_fields=["network_id", "subnet_id", "router_id", "subnet"]) network1_slice1 = NetworkSlice(network=network1, slice=slice1) network1_slice1.save() # does not need to be enacted instance1_2 = Instance(image=self.testImage, creator=self.testUser, slice=slice1, node=self.testNode, deploymentNetwork=self.testDeployment) instance1_2 = self.save_and_wait_for_enacted( instance1_2, nonempty_fields=["instance_id", "ip"]) ports = self.wait_for_ports(instance1_2, count=2) self.verify_network_names(ports, [slice1.name, network1.name]) self.slice1 = slice1 self.network1 = network1