Пример #1
0
    def _login(self):
        """Login into ESM.

        Perform login request and return available groups.

        :returns: dict -- map with group_name to group_id
        """
        ADMIN_GROUP_PREFIX = 'admin group:'

        url_params = {
            'op': 'login',
            'username': self._username,
            'password': self._password
        }
        reply = self._rest_client.rpc('admin', url_params, 'Login')
        if reply['state'] != 'adminSucceed':
            raise exception.CoraidESMBadCredentials()

        # Read groups map from login reply.
        groups_map = {}
        for group_info in reply.get('values', []):
            full_group_name = group_info['fullPath']
            if full_group_name.startswith(ADMIN_GROUP_PREFIX):
                group_name = full_group_name[len(ADMIN_GROUP_PREFIX):]
                groups_map[group_name] = group_info['groupId']

        return groups_map
Пример #2
0
    def _set_effective_group(self, groups_map, group):
        """Set effective group.

        Use groups_map returned from _login method.
        """
        try:
            group_id = groups_map[group]
        except KeyError:
            raise exception.CoraidESMBadGroup(group_name=group)

        url_params = {'op': 'setRbacGroup', 'groupId': group_id}
        reply = self._rest_client.rpc('admin', url_params, 'Group')
        if reply['state'] != 'adminSucceed':
            raise exception.CoraidESMBadCredentials()

        self._logined = True