示例#1
0
文件: servers.py 项目: vgerak/synnefo
    def test_reassign_vm(self, mrapi):
        volume = mfactory.VolumeFactory()
        vm = volume.machine
        another_project = "another_project"
        with mocked_quotaholder():
            vm = servers.reassign(vm.id,
                                  another_project,
                                  False,
                                  credentials=self.credentials)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        volume = mfactory.VolumeFactory()
        volume.index = 0
        volume.save()
        vm = volume.machine
        another_project = "another_project"
        with mocked_quotaholder():
            vm = servers.reassign(vm.id,
                                  another_project,
                                  True,
                                  credentials=self.credentials)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, True)
            vol = vm.volumes.get(id=volume.id)
            self.assertEqual(vol.project, another_project)
            self.assertEqual(vol.shared_to_project, True)
示例#2
0
    def test_reassign_vm_backends(self, mrapi):
        volume = mfactory.VolumeFactory()
        vm = volume.machine
        original_project = vm.project
        another_project = "another_project"
        with mocked_quotaholder():
            servers.reassign(vm, another_project, False)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        backend = vm.backend
        backend.public = False
        backend.save()
        with mocked_quotaholder():
            self.assertRaises(faults.BadRequest, servers.reassign, vm,
                              original_project, False)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        mfactory.ProjectBackendFactory(project=original_project,
                                       backend=backend)
        with mocked_quotaholder():
            servers.reassign(vm, original_project, False)
            self.assertEqual(vm.project, original_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertEqual(vol.project, original_project)
示例#3
0
文件: servers.py 项目: grnet/synnefo
    def test_reassign_vm_backends(self, mrapi):
        volume = mfactory.VolumeFactory()
        vm = volume.machine
        original_project = vm.project
        another_project = "another_project"
        with mocked_quotaholder():
            vm = servers.reassign(vm.id, another_project, False,
                                  credentials=self.credentials)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        backend = vm.backend
        backend.public = False
        backend.save()
        with mocked_quotaholder():
            self.assertRaises(faults.Forbidden, servers.reassign, vm.id,
                              original_project, False,
                              credentials=self.credentials)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        mfactory.ProjectBackendFactory(project=original_project,
                                       backend=backend)
        with mocked_quotaholder():
            vm = servers.reassign(vm.id, original_project, False,
                                  credentials=self.credentials)
            self.assertEqual(vm.project, original_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertEqual(vol.project, original_project)
示例#4
0
文件: servers.py 项目: grnet/synnefo
    def test_reassign_vm(self, mrapi):
        volume = mfactory.VolumeFactory()
        vm = volume.machine
        another_project = "another_project"
        with mocked_quotaholder():
            vm = servers.reassign(vm.id, another_project, False,
                                  credentials=self.credentials)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        volume = mfactory.VolumeFactory()
        volume.index = 0
        volume.save()
        vm = volume.machine
        another_project = "another_project"
        with mocked_quotaholder():
            vm = servers.reassign(vm.id, another_project, True,
                                  credentials=self.credentials)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, True)
            vol = vm.volumes.get(id=volume.id)
            self.assertEqual(vol.project, another_project)
            self.assertEqual(vol.shared_to_project, True)
示例#5
0
文件: servers.py 项目: grnet/synnefo
def reassign(request, server_id, args):
    credentials = request.credentials
    shared_to_project = args.get("shared_to_project", False)

    if shared_to_project and not settings.CYCLADES_SHARED_RESOURCES_ENABLED:
        raise faults.Forbidden("Sharing resource to the members of the project"
                               " is not permitted")

    project = args.get("project")
    if project is None:
        raise faults.BadRequest("Missing 'project' attribute.")

    servers.reassign(
        server_id, project, shared_to_project, credentials=credentials)

    log.info("User %s reassigned VM %s to project %s, shared %s",
             credentials.userid, server_id, project, shared_to_project)

    return HttpResponse(status=200)
示例#6
0
    def test_reassign_vm(self, mrapi):
        volume = mfactory.VolumeFactory()
        vm = volume.machine
        another_project = "another_project"
        with mocked_quotaholder():
            servers.reassign(vm, another_project)
            self.assertEqual(vm.project, another_project)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        volume = mfactory.VolumeFactory()
        volume.index = 0
        volume.save()
        vm = volume.machine
        another_project = "another_project"
        with mocked_quotaholder():
            servers.reassign(vm, another_project)
            self.assertEqual(vm.project, another_project)
            vol = vm.volumes.get(id=volume.id)
            self.assertEqual(vol.project, another_project)
示例#7
0
    def test_reassign_vm(self, mrapi):
        volume = mfactory.VolumeFactory()
        vm = volume.machine
        another_project = "another_project"
        with mocked_quotaholder():
            servers.reassign(vm, another_project)
            self.assertEqual(vm.project, another_project)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        volume = mfactory.VolumeFactory()
        volume.index = 0
        volume.save()
        vm = volume.machine
        another_project = "another_project"
        with mocked_quotaholder():
            servers.reassign(vm, another_project)
            self.assertEqual(vm.project, another_project)
            vol = vm.volumes.get(id=volume.id)
            self.assertEqual(vol.project, another_project)
示例#8
0
文件: servers.py 项目: vgerak/synnefo
    def test_reassign_vm_flavors(self, mrapi):
        volume = mfactory.VolumeFactory()
        vm = volume.machine
        vm_id = vm.id
        original_project = vm.project
        another_project = "another_project"
        with mocked_quotaholder():
            servers.reassign(vm_id,
                             another_project,
                             False,
                             credentials=self.credentials)
            vm = models.VirtualMachine.objects.get(id=vm_id)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        vm = models.VirtualMachine.objects.get(id=vm_id)
        flavor = vm.flavor
        flavor.public = False
        flavor.save()
        with mocked_quotaholder():
            self.assertRaises(faults.Forbidden, servers.reassign, vm_id,
                              original_project, False, self.credentials)
            vm = models.VirtualMachine.objects.get(id=vm_id)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        mfactory.FlavorAccessFactory(project=original_project, flavor=flavor)
        with mocked_quotaholder():
            servers.reassign(vm_id,
                             original_project,
                             False,
                             credentials=self.credentials)
            vm = models.VirtualMachine.objects.get(id=vm_id)
            self.assertEqual(vm.project, original_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertEqual(vol.project, original_project)
示例#9
0
def reassign(request, vm, args):
    if request.user_uniq != vm.userid:
        raise faults.Forbidden("Action 'reassign' is allowed only to the owner"
                               " of the VM.")

    shared_to_project = args.get("shared_to_project", False)

    if shared_to_project and not settings.CYCLADES_SHARED_RESOURCES_ENABLED:
        raise faults.Forbidden("Sharing resource to the members of the project"
                                " is not permitted")

    project = args.get("project")
    if project is None:
        raise faults.BadRequest("Missing 'project' attribute.")

    servers.reassign(vm, project, shared_to_project)

    log.info("User %s reassigned VM %s to project %s, shared %s",
             request.user_uniq, vm.id, project, shared_to_project)

    return HttpResponse(status=200)
示例#10
0
文件: servers.py 项目: vgerak/synnefo
def reassign(request, server_id, args):
    credentials = request.credentials
    shared_to_project = args.get("shared_to_project", False)

    if shared_to_project and not settings.CYCLADES_SHARED_RESOURCES_ENABLED:
        raise faults.Forbidden("Sharing resource to the members of the project"
                               " is not permitted")

    project = args.get("project")
    if project is None:
        raise faults.BadRequest("Missing 'project' attribute.")

    servers.reassign(server_id,
                     project,
                     shared_to_project,
                     credentials=credentials)

    log.info("User %s reassigned VM %s to project %s, shared %s",
             credentials.userid, server_id, project, shared_to_project)

    return HttpResponse(status=200)
示例#11
0
文件: servers.py 项目: grnet/synnefo
    def test_reassign_vm_flavors(self, mrapi):
        volume = mfactory.VolumeFactory()
        vm = volume.machine
        vm_id = vm.id
        original_project = vm.project
        another_project = "another_project"
        with mocked_quotaholder():
            servers.reassign(vm_id, another_project, False,
                             credentials=self.credentials)
            vm = models.VirtualMachine.objects.get(id=vm_id)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        vm = models.VirtualMachine.objects.get(id=vm_id)
        flavor = vm.flavor
        flavor.public = False
        flavor.save()
        with mocked_quotaholder():
            self.assertRaises(faults.Forbidden, servers.reassign, vm_id,
                              original_project, False, self.credentials)
            vm = models.VirtualMachine.objects.get(id=vm_id)
            self.assertEqual(vm.project, another_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertNotEqual(vol.project, another_project)

        mfactory.FlavorAccessFactory(project=original_project,
                                     flavor=flavor)
        with mocked_quotaholder():
            servers.reassign(vm_id, original_project, False,
                             credentials=self.credentials)
            vm = models.VirtualMachine.objects.get(id=vm_id)
            self.assertEqual(vm.project, original_project)
            self.assertEqual(vm.shared_to_project, False)
            vol = vm.volumes.get(id=volume.id)
            self.assertEqual(vol.project, original_project)
示例#12
0
def reassign(request, vm, args):
    project = args.get("project")
    if project is None:
        raise faults.BadRequest("Missing 'project' attribute.")
    servers.reassign(vm, project)
    return HttpResponse(status=200)
示例#13
0
def reassign(request, vm, args):
    project = args.get("project")
    if project is None:
        raise faults.BadRequest("Missing 'project' attribute.")
    servers.reassign(vm, project)
    return HttpResponse(status=200)