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)
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)
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)
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)
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)