该函数用于创建access path,具体实现过程如下:
- 解析请求参数,包括pid、igid、vid_list、username、password、pgid_list、name、ap_type、desc和rw_state等。
- 对参数进行检查和验证,如检查desc是否合法、ap_type是否有效等。
- 检查igid是否存在并且有wwn,如果传入了vid_list,则必须提供igid;如果传入了lunids,则必须提供vid_list。
- 判断access path名称和iqn是否已存在,并且判断access path个数是否超过限制。
- 获取access path的id,如果不存在则设置为1,否则在原有基础上加1。
- 如果用户名和密码非空,则获取chap_id,如果不存在则设置为1。
- 获取待添加pg所在节点和对应的tpg_id,以及各pg下的ip列表。
- 创建proxy。
- 在节点上依次创建。
- 将信息记录到etcd中。
- 返回成功响应,包括apid和lunid_dict。
其中,部分操作需要调用其他函数来完成,如获取ig信息、判断volume是否有效、判断access path名称是否已存在等,这些函数都在该类中实现。同时,在创建proxy和在节点上创建access path时,使用了多线程处理,以提高效率。




