Пример #1
0
def get_user_id_list(restproxy_serv, group_id, net_partition_id):
    req_params = {
        'group_id': group_id,
        'net_partition_id': net_partition_id
    }
    nuageuser = nuagelib.NuageUser(create_params=req_params)
    users_in_group = restproxy_serv.get(nuageuser.group_post_resource())
    return [user_detail['ID'] for user_detail in users_in_group]
Пример #2
0
 def delete_user(self, id):
     if id is None:
         return
     nuageuser = nuagelib.NuageUser()
     response = self.restproxy.rest_call('DELETE',
                                         nuageuser.delete_resource(id), '')
     if not nuageuser.delete_validate(response):
         LOG.error('Error in deleting user %s', id)
         raise restproxy.RESTProxyError(nuageuser.error_msg)
     LOG.debug('User %s deleted from VSD', id)
Пример #3
0
def get_user_details(restproxy_serv,
                     tenant,
                     group_id,
                     net_partition_id,
                     assoc=True):
    # assoc indicates that the user is associated with the group
    req_params = {'group_id': group_id, 'net_partition_id': net_partition_id}
    extra_params = {'userName': tenant}
    nuageuser = nuagelib.NuageUser(create_params=req_params,
                                   extra_params=extra_params)
    nuage_usr_extra_headers = nuageuser.extra_headers_get_by_username()
    if assoc:
        res_url = nuageuser.group_post_resource()
    else:
        res_url = nuageuser.ent_post_resource()
    users = restproxy_serv.get(res_url, extra_headers=nuage_usr_extra_headers)
    # only if we have a response find the usr else return None
    return users[0] if users else None
Пример #4
0
def get_user_id(restproxy_serv,
                tenant,
                group_id,
                net_partition_id,
                assoc=True):
    # assoc indicates that the user is associated with the group
    req_params = {'group_id': group_id, 'net_partition_id': net_partition_id}
    extra_params = {'userName': tenant}
    nuageuser = nuagelib.NuageUser(create_params=req_params,
                                   extra_params=extra_params)
    nuage_usr_extra_headers = nuageuser.extra_headers_get_by_username()
    if assoc:
        res_url = nuageuser.group_post_resource()
    else:
        res_url = nuageuser.ent_post_resource()

    usr_resp = restproxy_serv.rest_call('GET',
                                        res_url,
                                        '',
                                        extra_headers=nuage_usr_extra_headers)

    # only if we have a response find the usrID else return None
    if nuageuser.get_validate(usr_resp):
        return nuageuser.get_userid(usr_resp)
Пример #5
0
def create_usergroup(restproxy_serv,
                     tenant,
                     net_partition_id,
                     tenant_name=None):
    result = _get_usergroup_details(restproxy_serv, tenant, net_partition_id)

    if result:
        user_details, group_details = result
        if not user_details['externalID']:
            nuageuser = nuagelib.NuageUser()
            restproxy_serv.put(
                nuageuser.user_resource(user_details.get('ID')) +
                "?responseChoice=1",
                nuageuser.update_data('externalID', tenant + '@openstack'))
        if not group_details['externalID']:
            nuagegroup = nuagelib.NuageGroup()
            restproxy_serv.put(
                nuagegroup.group_resource(group_details.get('ID')) +
                "?responseChoice=1",
                nuagegroup.update_data('externalID', tenant + '@openstack'))
        if tenant_name is not None and (
                not group_details['description']
                or group_details['description'] != tenant_name):
            nuagegroup = nuagelib.NuageGroup()
            restproxy_serv.put(
                nuagegroup.group_resource(group_details.get('ID')) +
                "?responseChoice=1",
                nuagegroup.update_data('description', tenant_name))
        return user_details.get('ID'), group_details.get('ID')
    else:
        req_params = {
            'net_partition_id': net_partition_id,
            'name': tenant,
            'externalID': tenant + '@openstack',
            'description': tenant_name,
        }
        nuagegroup = nuagelib.NuageGroup(create_params=req_params)
        nuageuser = nuagelib.NuageUser(create_params=req_params)
        nuage_userid_list = []
        try:
            user = restproxy_serv.post(nuageuser.ent_post_resource(),
                                       nuageuser.post_data())[0]
            user_id = user['ID']
            LOG.debug('User %s created in VSD', user_id)
            nuage_userid_list.append(user_id)
        except restproxy.RESTProxyError as e:
            if e.code != constants.CONFLICT_ERR_CODE:
                raise
            else:
                user_id = get_user_id(restproxy_serv, tenant, '',
                                      net_partition_id, False)
                LOG.debug('User %s already exists in VSD', user_id)

        # Add tenant as a group
        try:
            group = restproxy_serv.post(nuagegroup.post_resource(),
                                        nuagegroup.post_data())[0]
            group_id = group['ID']
            LOG.debug('Group %s created in VSD', group_id)
        except restproxy.RESTProxyError as e:
            if e.code != constants.CONFLICT_ERR_CODE:
                raise
            else:
                group_id = get_group_id(restproxy_serv, tenant,
                                        net_partition_id)
                LOG.debug('Group %s already exists in VSD', group_id)

                # Group exists, so add the user to the existing user list
                ext_user_list = get_user_id_list(restproxy_serv, group_id,
                                                 net_partition_id)
                if ext_user_list:
                    LOG.debug('Group %(grp)s has users %(usr)s associated', {
                        'grp': group_id,
                        'usr': ext_user_list
                    })
                    nuage_userid_list.extend(ext_user_list)

        # Add user to the group
        nuageuser.set_group_id(group_id)
        data = nuage_userid_list
        restproxy_serv.put(nuageuser.group_post_resource(), data)
        return user_id, group_id
Пример #6
0
def get_user_list(restproxy_serv, group_id, net_partition_id):
    req_params = {'group_id': group_id, 'net_partition_id': net_partition_id}
    nuageuser = nuagelib.NuageUser(create_params=req_params)
    user_resp = restproxy_serv.rest_call('GET',
                                         nuageuser.group_post_resource(), '')
    return nuageuser.user_list(user_resp)
Пример #7
0
def create_usergroup(restproxy_serv, tenant, net_partition_id):
    result = _get_usergroup_details(restproxy_serv, tenant, net_partition_id)

    if result:
        if not result[0]['externalID']:
            nuageuser = nuagelib.NuageUser()
            user_resp = restproxy_serv.rest_call(
                'PUT', nuageuser.user_resource(result[0].get('ID')),
                nuageuser.update_data(tenant + '@openstack'))
        if not result[1]['externalID']:
            nuagegroup = nuagelib.NuageGroup()
            group_resp = restproxy_serv.rest_call(
                'PUT', nuagegroup.group_resource(result[1].get('ID')),
                nuagegroup.update_data(tenant + '@openstack'))
        return result[0].get('ID'), result[1].get('ID')
    else:
        req_params = {
            'net_partition_id': net_partition_id,
            'name': tenant,
            'externalID': tenant + '@openstack'
        }
        nuagegroup = nuagelib.NuageGroup(create_params=req_params)
        nuageuser = nuagelib.NuageUser(create_params=req_params)
        nuage_userid_list = []
        user_resp = restproxy_serv.rest_call('POST',
                                             nuageuser.ent_post_resource(),
                                             nuageuser.post_data())

        if not nuageuser.validate(user_resp):
            error_code = nuageuser.get_error_code(user_resp)
            if error_code != constants.CONFLICT_ERR_CODE:
                raise restproxy.RESTProxyError(nuagegroup.error_msg)

            user_id = get_user_id(restproxy_serv, tenant, '', net_partition_id,
                                  False)
            LOG.debug('User %s already exists in VSD', user_id)
        else:
            user_id = nuageuser.get_userid(user_resp)
            LOG.debug('User %s created in VSD', user_id)

        nuage_userid_list.append(user_id)

        # Add tenant as a group
        group_resp = restproxy_serv.rest_call('POST',
                                              nuagegroup.post_resource(),
                                              nuagegroup.post_data())
        if not nuagegroup.validate(group_resp):
            error_code = nuageuser.get_error_code(group_resp)
            if error_code != constants.CONFLICT_ERR_CODE:
                raise restproxy.RESTProxyError(nuagegroup.error_msg)
            group_id = get_group_id(restproxy_serv, tenant, net_partition_id)
            LOG.debug('Group %s already exists in VSD', group_id)

            # Group exists, so add the user to the existing user list
            ext_user_list = get_user_list(restproxy_serv, group_id,
                                          net_partition_id)
            if ext_user_list:
                LOG.debug('Group %(grp)s has users %(usr)s associated', {
                    'grp': group_id,
                    'usr': ext_user_list
                })
                nuage_userid_list.extend(ext_user_list)
        else:
            group_id = nuagegroup.get_groupid(group_resp)
            LOG.debug('Group %s created in VSD', group_id)

        # Add user to the group
        nuageuser.set_group_id(group_id)
        data = nuage_userid_list
        restproxy_serv.rest_call('PUT', nuageuser.group_post_resource(), data)

        return user_id, group_id
Пример #8
0
 def delete_user(self, id):
     if id is None:
         return
     nuageuser = nuagelib.NuageUser()
     self.restproxy.delete(nuageuser.delete_resource(id))
     LOG.debug('User %s deleted from VSD', id)