def handle(self, request, data): type_id = self.initial['volume_type_id'] current_projects = self.fields["member"].initial removed_projects = current_projects for p in data['member']: if p not in current_projects: # Newly added project access try: cinder.volume_type_add_project_access(request, type_id, p) except Exception: exceptions.handle(request, _('Failed to add project %(project)s to ' 'volume type access.') % {'project': p}) else: removed_projects.remove(p) for p in removed_projects: try: cinder.volume_type_remove_project_access(request, type_id, p) except Exception: exceptions.handle(request, _('Failed to remove project ' '%(project)s from volume type ' 'access.') % {'project': p}) messages.success(request, _('Modified volume type access: %s') % type_id) return True
def handle(self, request, data): type_id = self.initial['volume_type_id'] current_projects = self.fields["member"].initial removed_projects = current_projects for p in data['member']: if p not in current_projects: # Newly added project access try: cinder.volume_type_add_project_access(request, type_id, p) except Exception: exceptions.handle( request, _('Failed to add project %(project)s to ' 'volume type access.') % {'project': p}) else: removed_projects.remove(p) for p in removed_projects: try: cinder.volume_type_remove_project_access(request, type_id, p) except Exception: exceptions.handle( request, _('Failed to remove project ' '%(project)s from volume type ' 'access.') % {'project': p}) messages.success(request, _('Modified volume type access: %s') % type_id) return True
def _test_edit_volume_type_access(self, exception=False): volume_type = self.cinder_volume_types.list()[2] volume_type.id = u'1' keystone.tenant_list(IsA(http.HttpRequest)).AndReturn( [self.tenants.list(), False]) type_access = self.cinder_type_access.list() formData = {'member': [u'3'], 'volume_type_id': volume_type.id} volume_type = cinder.volume_type_get(IsA( http.HttpRequest), volume_type.id).AndReturn(volume_type) cinder.volume_type_access_list(IsA(http.HttpRequest), volume_type.id).AndReturn(type_access) cinder.volume_type_add_project_access(IsA(http.HttpRequest), volume_type.id, u'3') if exception: cinder.volume_type_remove_project_access( IsA(http.HttpRequest), volume_type.id, u'1')\ .AndRaise(exceptions.BadRequest()) else: cinder.volume_type_remove_project_access(IsA(http.HttpRequest), volume_type.id, u'1') self.mox.ReplayAll() url = reverse('horizon:admin:volume_types:edit_access', args=[volume_type.id]) res = self.client.post(url, formData) self.assertNoFormErrors(res) self.assertRedirectsNoFollow(res, INDEX_URL)