예제 #1
0
    def get_data(self):
        domains = []
        domain_context = self.request.session.get('domain_context')

        if policy.check((
            ("identity", "identity:list_domains"),
        ), self.request) and not domain_context:
            try:
                domains = api.keystone.domain_list(self.request)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve domain list.'))
        elif policy.check((
            ("identity", "identity:get_domain"),
        ), self.request):
            try:
                domain_id = identity.get_domain_id_for_operation(self.request)
                domain = api.keystone.domain_get(self.request, domain_id)
                domains.append(domain)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve domain information.'))
        else:
            msg = _("Insufficient privilege level to view domain information.")
            messages.info(self.request, msg)
        return domains
예제 #2
0
파일: views.py 프로젝트: amotoki/horizon
    def get_data(self):
        groups = []
        filters = self.get_filters()
        self._needs_filter_first = False

        if policy.check((("identity", "identity:list_groups"),),
                        self.request):

            # If filter_first is set and if there are not other filters
            # selected, then search criteria must be provided and
            # return an empty list
            filter_first = getattr(settings, 'FILTER_DATA_FIRST', {})
            if filter_first.get('identity.groups', False) \
                    and len(filters) == 0:
                self._needs_filter_first = True
                return groups

            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                groups = api.keystone.group_list(self.request,
                                                 domain=domain_id,
                                                 filters=filters)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve group list.'))
        else:
            msg = _("Insufficient privilege level to view group information.")
            messages.info(self.request, msg)
        return groups
예제 #3
0
    def _update_project(self, request, data):
        """Update project info"""
        domain_id = identity.get_domain_id_for_operation(request)
        try:
            project_id = data['project_id']

            # add extra information
            if keystone.VERSIONS.active >= 3:
                EXTRA_INFO = settings.PROJECT_TABLE_EXTRA_INFO
                kwargs = dict((key, data.get(key)) for key in EXTRA_INFO)
            else:
                kwargs = {}

            return api.keystone.tenant_update(request,
                                              project_id,
                                              name=data['name'],
                                              description=data['description'],
                                              enabled=data['enabled'],
                                              domain=domain_id,
                                              **kwargs)
        except exceptions.Conflict:
            msg = _('Project name "%s" is already used.') % data['name']
            self.failure_message = msg
            return
        except Exception as e:
            LOG.debug('Project update failed: %s', e)
            exceptions.handle(request, ignore=True)
            return
예제 #4
0
    def get_data(self):
        groups = []
        filters = self.get_filters()
        self._needs_filter_first = False

        if policy.check((("identity", "identity:list_groups"), ),
                        self.request):

            # If filter_first is set and if there are not other filters
            # selected, then search criteria must be provided and
            # return an empty list
            filter_first = getattr(settings, 'FILTER_DATA_FIRST', {})
            if filter_first.get('identity.groups', False) \
                    and len(filters) == 0:
                self._needs_filter_first = True
                return groups

            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                groups = api.keystone.group_list(self.request,
                                                 domain=domain_id,
                                                 filters=filters)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve group list.'))
        else:
            msg = _("Insufficient privilege level to view group information.")
            messages.info(self.request, msg)

        return groups
예제 #5
0
    def get_data(self):
        users = []
        filters = self.get_filters()
        if policy.check((("identity", "identity:list_users"),),
                        self.request):
            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                users = api.keystone.user_list(self.request,
                                               domain=domain_id,
                                               filters=filters)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve user list.'))
        elif policy.check((("identity", "identity:get_user"),),
                          self.request):
            try:
                user = api.keystone.user_get(self.request,
                                             self.request.user.id)
                users.append(user)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve user information.'))
        else:
            msg = _("Insufficient privilege level to view user information.")
            messages.info(self.request, msg)

        if api.keystone.VERSIONS.active >= 3:
            domain_lookup = api.keystone.domain_lookup(self.request)
            for u in users:
                u.domain_name = domain_lookup.get(u.domain_id)
        return users
예제 #6
0
    def _update_project(self, request, data):
        """Update project info"""
        domain_id = identity.get_domain_id_for_operation(request)
        try:
            project_id = data['project_id']

            # add extra information
            if keystone.VERSIONS.active >= 3:
                EXTRA_INFO = getattr(settings, 'PROJECT_TABLE_EXTRA_INFO', {})
                kwargs = dict((key, data.get(key)) for key in EXTRA_INFO)
            else:
                kwargs = {}

            return api.keystone.tenant_update(
                request,
                project_id,
                name=data['name'],
                description=data['description'],
                enabled=data['enabled'],
                domain=domain_id,
                **kwargs)
        except exceptions.Conflict:
            msg = _('Project name "%s" is already used.') % data['name']
            self.failure_message = msg
            return
        except Exception as e:
            LOG.debug('Project update failed: %s', e)
            exceptions.handle(request, ignore=True)
            return
예제 #7
0
파일: views.py 프로젝트: amotoki/horizon
    def get_data(self):
        domains = []
        domain_context = self.request.session.get('domain_context')

        if policy.check((
            ("identity", "identity:list_domains"),
        ), self.request) and not domain_context:
            try:
                domains = api.keystone.domain_list(self.request)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve domain list.'))
        elif policy.check((
            ("identity", "identity:get_domain"),
        ), self.request):
            try:
                domain_id = identity.get_domain_id_for_operation(self.request)
                domain = api.keystone.domain_get(self.request, domain_id)
                domains.append(domain)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve domain information.'))
        else:
            msg = _("Insufficient privilege level to view domain information.")
            messages.info(self.request, msg)
        return domains
예제 #8
0
파일: views.py 프로젝트: deponian/horizon
    def get_data(self):
        tenants = []
        marker = self.request.GET.get(
            project_tables.TenantsTable._meta.pagination_param, None)
        self._more = False
        filters = self.get_filters()

        self._needs_filter_first = False

        if policy.check((("identity", "identity:list_projects"),),
                        self.request):

            # If filter_first is set and if there are not other filters
            # selected, then search criteria must be provided and
            # return an empty list
            filter_first = getattr(settings, 'FILTER_DATA_FIRST', {})
            if filter_first.get('identity.projects', False) and len(
                    filters) == 0:
                self._needs_filter_first = True
                self._more = False
                return tenants

            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                tenants, self._more = api.keystone.tenant_list(
                    self.request,
                    domain=domain_id,
                    paginate=True,
                    filters=filters,
                    marker=marker)
            except Exception:
                exceptions.handle(self.request,
                                  _("Unable to retrieve project list."))
        elif policy.check((("identity", "identity:list_user_projects"),),
                          self.request):
            try:
                tenants, self._more = api.keystone.tenant_list(
                    self.request,
                    user=self.request.user.id,
                    paginate=True,
                    marker=marker,
                    filters=filters,
                    admin=False)
            except Exception:
                exceptions.handle(self.request,
                                  _("Unable to retrieve project information."))
        else:
            msg = \
                _("Insufficient privilege level to view project information.")
            messages.info(self.request, msg)

        if api.keystone.VERSIONS.active >= 3:
            domain_lookup = api.keystone.domain_lookup(self.request)
            for t in tenants:
                t.domain_name = domain_lookup.get(t.domain_id)

        return tenants
예제 #9
0
    def get_data(self):
        tenants = []
        marker = self.request.GET.get(
            project_tables.TenantsTable._meta.pagination_param, None)
        self._more = False
        filters = self.get_filters()

        self._needs_filter_first = False

        if policy.check((("identity", "identity:list_projects"), ),
                        self.request):

            # If filter_first is set and if there are not other filters
            # selected, then search criteria must be provided and
            # return an empty list
            filter_first = getattr(settings, 'FILTER_DATA_FIRST', {})
            if filter_first.get('identity.projects',
                                False) and len(filters) == 0:
                self._needs_filter_first = True
                self._more = False
                return tenants

            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                tenants, self._more = api.keystone.tenant_list(
                    self.request,
                    domain=domain_id,
                    paginate=True,
                    filters=filters,
                    marker=marker)
            except Exception:
                exceptions.handle(self.request,
                                  _("Unable to retrieve project list."))
        elif policy.check((("identity", "identity:list_user_projects"), ),
                          self.request):
            try:
                tenants, self._more = api.keystone.tenant_list(
                    self.request,
                    user=self.request.user.id,
                    paginate=True,
                    marker=marker,
                    filters=filters,
                    admin=False)
            except Exception:
                exceptions.handle(self.request,
                                  _("Unable to retrieve project information."))
        else:
            msg = \
                _("Insufficient privilege level to view project information.")
            messages.info(self.request, msg)

        if api.keystone.VERSIONS.active >= 3:
            domain_lookup = api.keystone.domain_lookup(self.request)
            for t in tenants:
                t.domain_name = domain_lookup.get(t.domain_id)

        return tenants
예제 #10
0
파일: views.py 프로젝트: jjungeun/Openstack
    def get_tenants_data(self):
        for role in self.request.user.roles:
            self.roles.append(role.get('name'))

        if self.roles.__contains__("user"):
            self.template_name = 'main/overview/index_user.html'
        elif self.roles.__contains__('project_manager'):
            self.template_name = 'main/overview/index_pm.html'

        tenants = []
        marker = self.request.GET.get(
            project_tables.TenantsTable._meta.pagination_param, None)
        self._more = False

        if policy.check((("identity", "identity:list_projects"), ),
                        self.request):

            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                if self.request.user.username == 'admin':
                    tenants, self._more = api.keystone.tenant_list(
                        self.request,
                        domain=domain_id,
                        paginate=True,
                        marker=marker)
                else:
                    tenants, self._more = api.keystone.tenant_my_list(
                        self.request, user_id=self.request.user.id)
            except Exception:
                exceptions.handle(self.request,
                                  _("Unable to retrieve project list."))
        elif policy.check((("identity", "identity:list_user_projects"), ),
                          self.request):
            try:
                tenants, self._more = api.keystone.tenant_list(
                    self.request,
                    user=self.request.user.id,
                    paginate=True,
                    marker=marker,
                    admin=False)
            except Exception:
                exceptions.handle(self.request,
                                  _("Unable to retrieve project information."))
        else:
            msg = \
                _("Insufficient privilege level to view project information.")
            messages.info(self.request, msg)

        if api.keystone.VERSIONS.active >= 3:
            domain_lookup = api.keystone.domain_lookup(self.request)
            for t in tenants:
                t.domain_name = domain_lookup.get(t.domain_id)

        return tenants
예제 #11
0
    def post(self, request):
        """Create a group.

        This action creates a group using parameters supplied in the POST
        application/json object. The "name" (string) parameter is required,
        "description" (string) is optional.

        This method returns the new group object on success.
        """
        new_group = api.keystone.group_create(
            request, identity_utils.get_domain_id_for_operation(request),
            request.DATA['name'], request.DATA.get("description", None))

        return rest_utils.CreatedResponse(
            '/api/keystone/groups/%s' % new_group.id, new_group.to_dict())
예제 #12
0
 def handle(self, request, data):
     try:
         LOG.info('Creating group with name "%s"' % data['name'])
         api.keystone.group_create(
             request,
             domain_id=identity_utils.get_domain_id_for_operation(
                 self.request),
             name=data['name'],
             description=data['description'])
         messages.success(request,
                          _('Group "%s" was successfully created.')
                          % data['name'])
     except Exception:
         exceptions.handle(request, _('Unable to create group.'))
         return False
     return True
예제 #13
0
 def handle(self, request, data):
     try:
         LOG.info('Creating group with name "%s"' % data['name'])
         api.keystone.group_create(
             request,
             domain_id=identity_utils.get_domain_id_for_operation(
                 self.request),
             name=data['name'],
             description=data['description'])
         messages.success(
             request,
             _('Group "%s" was successfully created.') % data['name'])
     except Exception:
         exceptions.handle(request, _('Unable to create group.'))
         return False
     return True
예제 #14
0
 def get_data(self):
     groups = []
     domain_id = identity.get_domain_id_for_operation(self.request)
     filters = self.get_filters()
     if policy.check((("identity", "identity:list_groups"), ),
                     self.request):
         try:
             groups = api.keystone.group_list(self.request,
                                              domain=domain_id,
                                              filters=filters)
         except Exception:
             exceptions.handle(self.request,
                               _('Unable to retrieve group list.'))
     else:
         msg = _("Insufficient privilege level to view group information.")
         messages.info(self.request, msg)
     return groups
예제 #15
0
    def get_data(self):
        users = []
        filters = self.get_filters()

        self._needs_filter_first = False

        if policy.check((("identity", "identity:list_users"),),
                        self.request):

            # If filter_first is set and if there are not other filters
            # selected, then search criteria must be provided
            # and return an empty list
            filter_first = getattr(settings, 'FILTER_DATA_FIRST', {})
            if filter_first.get('identity.users', False) and len(filters) == 0:
                self._needs_filter_first = True
                return users

            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                users = api.keystone.user_list(self.request,
                                               domain=domain_id,
                                               filters=filters)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve user list.'))
        elif policy.check((("identity", "identity:get_user"),),
                          self.request):
            try:
                user = api.keystone.user_get(self.request,
                                             self.request.user.id,
                                             admin=False)
                users.append(user)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve user information.'))
        else:
            msg = _("Insufficient privilege level to view user information.")
            messages.info(self.request, msg)

        if api.keystone.VERSIONS.active >= 3:
            domain_lookup = api.keystone.domain_lookup(self.request)
            for u in users:
                u.domain_name = domain_lookup.get(u.domain_id)
        return users
예제 #16
0
    def get_data(self):
        users = []
        filters = self.get_filters()

        self._needs_filter_first = False

        if policy.check((("identity", "identity:list_users"),),
                        self.request):

            # If filter_first is set and if there are not other filters
            # selected, then search criteria must be provided
            # and return an empty list
            filter_first = getattr(settings, 'FILTER_DATA_FIRST', {})
            if filter_first.get('identity.users', False) and len(filters) == 0:
                self._needs_filter_first = True
                return users

            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                users = api.keystone.user_list(self.request,
                                               domain=domain_id,
                                               filters=filters)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve user list.'))
        elif policy.check((("identity", "identity:get_user"),),
                          self.request):
            try:
                user = api.keystone.user_get(self.request,
                                             self.request.user.id,
                                             admin=False)
                users.append(user)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve user information.'))
        else:
            msg = _("Insufficient privilege level to view user information.")
            messages.info(self.request, msg)

        if api.keystone.VERSIONS.active >= 3:
            domain_lookup = api.keystone.domain_lookup(self.request)
            for u in users:
                u.domain_name = domain_lookup.get(u.domain_id)
        return users
예제 #17
0
파일: keystone.py 프로젝트: dklyle/horizon
    def post(self, request):
        """Create a group.

        This action creates a group using parameters supplied in the POST
        application/json object. The "name" (string) parameter is required,
        "description" (string) is optional.

        This method returns the new group object on success.
        """
        new_group = api.keystone.group_create(
            request,
            identity_utils.get_domain_id_for_operation(request),
            request.DATA['name'],
            request.DATA.get("description", None))

        return rest_utils.CreatedResponse(
            '/api/keystone/groups/%s' % new_group.id,
            new_group.to_dict()
        )
예제 #18
0
    def get_data(self):
        tenants = []
        marker = self.request.GET.get(
            project_tables.TenantsTable._meta.pagination_param, None)
        self._more = False
        filters = self.get_filters()
        if policy.check((("identity", "identity:list_projects"), ),
                        self.request):
            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                tenants, self._more = api.keystone.tenant_list(
                    self.request,
                    domain=domain_id,
                    paginate=True,
                    filters=filters,
                    marker=marker)
            except Exception:
                exceptions.handle(self.request,
                                  _("Unable to retrieve project list."))
        elif policy.check((("identity", "identity:list_user_projects"), ),
                          self.request):
            try:
                tenants, self._more = api.keystone.tenant_list(
                    self.request,
                    user=self.request.user.id,
                    paginate=True,
                    marker=marker,
                    filters=filters,
                    admin=False)
            except Exception:
                exceptions.handle(self.request,
                                  _("Unable to retrieve project information."))
        else:
            msg = \
                _("Insufficient privilege level to view project information.")
            messages.info(self.request, msg)

        if api.keystone.VERSIONS.active >= 3:
            domain_lookup = api.keystone.domain_lookup(self.request)
            for t in tenants:
                t.domain_name = domain_lookup.get(t.domain_id)

        return tenants
예제 #19
0
파일: views.py 프로젝트: jjungeun/Openstack
    def get_users_data(self):
        users = []
        self._needs_filter_first = False

        if policy.check((("identity", "identity:list_users"), ), self.request):

            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                if self.request.user.username == 'admin':
                    users = api.keystone.user_list(self.request,
                                                   domain=domain_id)
                    #filters=filters)
                else:
                    projects = api.keystone.tenant_list(
                        self.request, user=self.request.user.id, admin=True)
                    users = api.keystone.user_my_list(self.request,
                                                      projects=projects)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve user list.'))
        elif policy.check((("identity", "identity:get_user"), ), self.request):
            try:
                user = api.keystone.user_get(self.request,
                                             self.request.user.id,
                                             admin=False)
                users.append(user)
            except Exception:
                exceptions.handle(self.request,
                                  _('Unable to retrieve user information.'))
        else:
            msg = _("Insufficient privilege level to view user information.")
            messages.info(self.request, msg)

        if api.keystone.VERSIONS.active >= 3:
            domain_lookup = api.keystone.domain_lookup(self.request)
            for u in users:
                u.domain_name = domain_lookup.get(u.domain_id)
        return users
예제 #20
0
    def get_tenants_data(self):
        tenants = []

        marker = self.request.GET.get(
            project_tables.TenantsTable._meta.pagination_param, None)
        self._more = False

        filters = self._get_filter()

        if policy.check((("crystal", "crystal:list_projects"), ),
                        self.request):

            # If filter_first is set and if there are not other filters
            # selected, then search criteria must be provided and
            # return an empty list
            filter_first = getattr(settings, 'FILTER_DATA_FIRST', {})
            if filter_first.get('crystal.projects', False):
                return tenants

            domain_id = identity.get_domain_id_for_operation(self.request)
            try:
                tenants, self._more = api.keystone.tenant_list(
                    self.request,
                    domain=domain_id,
                    paginate=True,
                    filters=filters,
                    marker=marker)
            except Exception:
                exceptions.handle(self.request,
                                  _("Unable to retrieve project list."))
        elif policy.check((("crystal", "crystal:list_user_projects"), ),
                          self.request):
            try:
                tenants, self._more = api.keystone.tenant_list(
                    self.request,
                    user=self.request.user.id,
                    paginate=True,
                    marker=marker,
                    filters=filters,
                    admin=False)
            except Exception:
                exceptions.handle(self.request,
                                  _("Unable to retrieve project information."))
        else:
            msg = \
                _("Insufficient privilege level to view project information.")
            messages.info(self.request, msg)

        if api.keystone.VERSIONS.active >= 3:
            domain_lookup = api.keystone.domain_lookup(self.request)
            for t in tenants:
                t.domain_name = domain_lookup.get(t.domain_id)

        enabled_crystal_projects = json.loads(
            crystal_api.list_projects_crystal_enabled(self.request).text)
        projects = []

        for tenant in tenants:
            if tenant.id in enabled_crystal_projects:
                crystal_enabled = True
            else:
                crystal_enabled = False
            project = CrystalProject(tenant.id, tenant.name,
                                     tenant.description, tenant.domain_id,
                                     tenant.enabled, crystal_enabled)
            projects.append(project)
        return projects
예제 #21
0
 def _get_group_members(self):
     group_id = self.kwargs['group_id']
     domain_id = identity.get_domain_id_for_operation(self.request)
     return api.keystone.user_list(self.request,
                                   domain=domain_id,
                                   group=group_id)
예제 #22
0
파일: views.py 프로젝트: amotoki/horizon
 def _get_group_members(self):
     group_id = self.kwargs['group_id']
     domain_id = identity.get_domain_id_for_operation(self.request)
     return api.keystone.user_list(self.request, domain=domain_id,
                                   group=group_id)