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]
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)
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
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)
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
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)
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
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)