3par driver does not reestablish CHAP session correctly if compute is rebooted
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Cinder |
Fix Released
|
Medium
|
Vivek Soni |
Bug Description
We are seeing failure with CHAP authentication for 3Par iscsi driver when compute instances are restarted after host reboot.
Created compute servers on a specific host with 3 Par volumes and they are successfully started and attached to volumes. Stopped the nova instances running on host and then host was rebooted. Then we tried starting instances on that compute host, there are no any existing attached volumes. Instance start failed with error in compute log and then next instance start worked. For example, if you have X instances you may need to try to start different instances until you hit the one that created the original CHAP session.
As per nova block_device_
select connection_info from block_device_
stack@helion-
{
"driver_
"connector": {
"initiator": "iqn.1993-
"ip": "192.168.22.15",
"platform": "x86_64",
"host": "helion-
"os_type": "linux2",
"multipath": false
},
"serial": "91764da8-
"data": {
"device_path": "/dev/disk/
"target_
"encrypted": false,
"qos_specs": null,
"target_iqn": "iqn.2000-
"target_portal": "192.168.
"auth_password": "CzSaZTdCW4SnueW5",
"target_lun": 0,
"access_mode": "rw",
"auth_username": "ha-volume-
"auth_method": "CHAP"
}
}
{
"driver_
"connector": {
"initiator": "iqn.1993-
"ip": "192.168.22.15",
"platform": "x86_64",
"host": "helion-
"os_type": "linux2",
"multipath": false
},
"serial": "882e1c36-
"data": {
"device_path": "/dev/disk/
"target_
"encrypted": false,
"qos_specs": null,
"target_iqn": "iqn.2000-
"target_portal": "192.168.
"auth_password": "bgQoR4q4nz5pSPqE",
"target_lun": 1,
"access_mode": "rw",
"auth_username": "ha-volume-
"auth_method": "CHAP"
}
}
The problem is that the _create_export() is trying to find HostVLUNs based off of the volume['host'], which is the cinder "host". That will never work, because the driver creates hosts based off of the os-brick connector['host']. This is completely broken as it is.