示例#1
0
    def test_create_cgroup_from_snapshot_exception(self):
        cg_snapshot = self.cinder_cg_snapshots.first()
        new_cg_name = 'test CG SS Create'
        formData = {'cg_snapshot_id': cg_snapshot.id,
                    'name': new_cg_name,
                    'description': 'test desc'}

        cinder.volume_cg_snapshot_get(IsA(http.HttpRequest), cg_snapshot.id).\
            AndReturn(cg_snapshot)
        cinder.volume_cgroup_create_from_source(
            IsA(http.HttpRequest),
            formData['name'],
            source_cgroup_id=formData['cg_snapshot_id'],
            description=formData['description'])\
            .AndRaise(self.exceptions.cinder)
        self.mox.ReplayAll()

        url = reverse('horizon:project:cg_snapshots:create_cgroup',
                      args=[cg_snapshot.id])
        res = self.client.post(url, formData)
        self.assertNoFormErrors(res)
        # There are a bunch of backslashes for formatting in the message from
        # the response, so remove them when validating the error message.
        self.assertIn('Unable to create consistency group "%s" from snapshot.'
                      % new_cg_name,
                      res.cookies.output().replace('\\', ''))
        self.assertRedirectsNoFollow(res, INDEX_URL)
示例#2
0
    def test_create_cgroup_from_snapshot(self):
        cgroup = self.cinder_consistencygroups.first()
        cg_snapshot = self.cinder_cg_snapshots.first()
        formData = {
            'cg_snapshot_id': cg_snapshot.id,
            'name': 'test CG SS Create',
            'description': 'test desc'
        }

        cinder.volume_cg_snapshot_get(IsA(http.HttpRequest), cg_snapshot.id).\
            AndReturn(cg_snapshot)
        cinder.volume_cgroup_create_from_source(
            IsA(http.HttpRequest),
            formData['name'],
            source_cgroup_id=formData['cg_snapshot_id'],
            description=formData['description'])\
            .AndReturn(cgroup)
        self.mox.ReplayAll()

        url = reverse(
            'horizon:compute_user:volume2:cg_snapshots:create_cgroup',
            args=[cg_snapshot.id])
        res = self.client.post(url, formData)
        self.assertNoFormErrors(res)
        self.assertRedirectsNoFollow(res, VOLUME_INDEX_URL)
示例#3
0
    def test_create_clone(self):
        cgroup = self.cinder_consistencygroups.first()
        formData = {'cgroup_id': cgroup.id,
                    'name': 'test CG Clone',
                    'description': 'test desc'}
        cinder.volume_cgroup_create_from_source(
            IsA(http.HttpRequest),
            formData['name'],
            source_cgroup_id=formData['cgroup_id'],
            description=formData['description'])\
            .AndReturn(cgroup)
        self.mox.ReplayAll()

        url = reverse('horizon:project:cgroups:clone_cgroup',
                      args=[cgroup.id])
        res = self.client.post(url, formData)
        self.assertNoFormErrors(res)
        self.assertRedirectsNoFollow(res, INDEX_URL)
示例#4
0
    def handle(self, request, data):
        try:

            message = _('Creating consistency group "%s".') % data['name']
            cgroup = cinder.volume_cgroup_create_from_source(
                request,
                data['name'],
                cg_snapshot_id=data['cg_snapshot_id'],
                description=data['description'])

            messages.info(request, message)
            return cgroup
        except Exception:
            redirect = reverse("horizon:admin:volumes:index")
            msg = _('Unable to create consistency '
                    'group "%s" from snapshot.') % data['name']
            exceptions.handle(request, msg, redirect=redirect)
示例#5
0
    def handle(self, request, data):
        try:
            message = _('Creating consistency group "%s".') % data['name']
            cgroup = cinder.volume_cgroup_create_from_source(
                request,
                data['name'],
                source_cgroup_id=data['cgroup_id'],
                description=data['description'])

            messages.info(request, message)
            return cgroup
        except Exception:
            redirect = reverse("horizon:admin:volumes:index")
            msg = _('Unable to clone consistency group.')

            search_opts = {'consistentcygroup_id': data['cgroup_id']}
            volumes = cinder.volume_list(request, search_opts=search_opts)
            if len(volumes) == 0:
                msg = _('Unable to clone empty consistency group.')

            exceptions.handle(request, msg, redirect=redirect)