Пример #1
0
 def test_replace_new_secondary_with_node(self):
     data = dict(mode=REPLACE_DISK_CHG,
                 disks='',
                 node='gtest1.example.bak',
                 iallocator='')
     form = ReplaceDisksForm(self.vm, data)
     self.assertTrue(form.is_valid(), form.errors)
     form.save()
Пример #2
0
 def test_clean_disks_multiple(self):
     data = dict(mode=REPLACE_DISK_AUTO,
                 disks=[0, 0],
                 node='',
                 iallocator='')
     form = ReplaceDisksForm(self.vm, data)
     self.assertTrue(form.is_valid(), form.errors)
     self.assertEqual('0,0', form.cleaned_data['disks'])
     form.save()
Пример #3
0
 def test_replace_new_secondary_with_node(self):
     data = dict(
         mode=REPLACE_DISK_CHG,
         disks='',
         node='gtest1.example.bak',
         iallocator=''
     )
     form = ReplaceDisksForm(self.vm, data)
     self.assertTrue(form.is_valid(), form.errors)
     form.save()
Пример #4
0
 def test_clean_disks_single(self):
     data = dict(
         mode=REPLACE_DISK_AUTO,
         disks=[0],
         node='',
         iallocator=''
     )
     form = ReplaceDisksForm(self.vm, data)
     self.assertTrue(form.is_valid(), form.errors)
     self.assertEqual('0', form.cleaned_data['disks'])
     form.save()
Пример #5
0
 def test_auto(self):
     data = dict(
         mode=REPLACE_DISK_AUTO,
         disks='',
         node='',
         iallocator=''
     )
     form = ReplaceDisksForm(self.vm, data)
     form.is_valid()
     self.assertTrue(form.is_valid(), form.errors)
     form.save()
Пример #6
0
def replace_disks(request, cluster_slug, instance):
    """
    view used for initiating a Replace Disks job
    """
    vm, cluster = get_vm_and_cluster_or_404(cluster_slug, instance)
    user = request.user
    if not (user.is_superuser or
            user.has_any_perms(cluster, ['admin', 'replace_disks'])):
        raise Http403(NO_PRIVS)

    if request.method == 'POST':
        form = ReplaceDisksForm(vm, request.POST)
        if form.is_valid():
            try:
                job = form.save()
                job.refresh()
                content = json.dumps(job.info)

                # log information
                log_action('VM_REPLACE_DISKS', user, vm, job)
            except GanetiApiError, e:
                content = json.dumps({'__all__': [str(e)]})
        else:
            # error in form return ajax response
            content = json.dumps(form.errors)
        return HttpResponse(content, mimetype='application/json')
def replace_disks(request, cluster_slug, instance):
    """
    view used for initiating a Replace Disks job
    """
    vm, cluster = get_vm_and_cluster_or_404(cluster_slug, instance)
    user = request.user
    if not (user.is_superuser or user.has_any_perms(cluster, ['admin','replace_disks'])):
        raise Http403(NO_PRIVS)

    if request.method == 'POST':
        form = ReplaceDisksForm(vm, request.POST)
        if form.is_valid():
            try:
                job = form.save()
                job.refresh()
                content = json.dumps(job.info)

                # log information
                log_action('VM_REPLACE_DISKS', user, vm, job)
            except GanetiApiError, e:
                content = json.dumps({'__all__':[str(e)]})
        else:
            # error in form return ajax response
            content = json.dumps(form.errors)
        return HttpResponse(content, mimetype='application/json')
Пример #8
0
 def test_auto(self):
     data = dict(mode=REPLACE_DISK_AUTO, disks='', node='', iallocator='')
     form = ReplaceDisksForm(self.vm, data)
     form.is_valid()
     self.assertTrue(form.is_valid(), form.errors)
     form.save()