示例#1
0
文件: forms.py 项目: CCI-MOC/horizon
    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
示例#2
0
    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
示例#3
0
    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)