def _probe_hba(self): try: # use sysfs tree to gather FC data dom = xml.dom.minidom.Document() hbalist = dom.createElement("HBAInfoList") dom.appendChild(hbalist) hostlist = util.listdir("/sys/class/fc_host") for host in hostlist: hbainfo = dom.createElement("HBAInfo") hbalist.appendChild(hbainfo) cmd = ["cat", "/sys/class/fc_host/%s/symbolic_name" % host] sname = util.pread(cmd)[:-1] entry = dom.createElement("model") hbainfo.appendChild(entry) textnode = dom.createTextNode(sname) entry.appendChild(textnode) cmd = ["cat", "/sys/class/fc_host/%s/node_name" % host] nname = util.pread(cmd)[:-1] nname = util.make_WWN(nname) entry = dom.createElement("nodeWWN") hbainfo.appendChild(entry) # adjust nodename to look like expected string textnode = dom.createTextNode(nname) entry.appendChild(textnode) port = dom.createElement("Port") hbainfo.appendChild(port) cmd = ["cat", "/sys/class/fc_host/%s/port_name" % host] pname = util.pread(cmd)[:-1] pname = util.make_WWN(pname) entry = dom.createElement("portWWN") port.appendChild(entry) # adjust nodename to look like expected string textnode = dom.createTextNode(pname) entry.appendChild(textnode) cmd = ["cat", "/sys/class/fc_host/%s/port_state" % host] state = util.pread(cmd)[:-1] entry = dom.createElement("state") port.appendChild(entry) # adjust nodename to look like expected string textnode = dom.createTextNode(state) entry.appendChild(textnode) entry = dom.createElement("deviceName") port.appendChild(entry) # adjust nodename to look like expected string textnode = dom.createTextNode("/sys/class/scsi_host/%s" % host) entry.appendChild(textnode) return dom.toxml() except: raise xs_errors.XenError('CSLGXMLParse', \ opterr='HBA probe failed')
def _probe_hba(self): try: # use sysfs tree to gather FC data dom = xml.dom.minidom.Document() hbalist = dom.createElement("HBAInfoList") dom.appendChild(hbalist) hostlist = util.listdir("/sys/class/fc_host") for host in hostlist: hbainfo = dom.createElement("HBAInfo") hbalist.appendChild(hbainfo) cmd = ["cat", "/sys/class/fc_host/%s/symbolic_name" % host] sname = util.pread(cmd)[:-1] entry = dom.createElement("model") hbainfo.appendChild(entry) textnode = dom.createTextNode(sname) entry.appendChild(textnode) cmd = ["cat", "/sys/class/fc_host/%s/node_name" % host] nname = util.pread(cmd)[:-1] nname = util.make_WWN(nname) entry = dom.createElement("nodeWWN") hbainfo.appendChild(entry) # adjust nodename to look like expected string textnode = dom.createTextNode(nname) entry.appendChild(textnode) port = dom.createElement("Port") hbainfo.appendChild(port) cmd = ["cat", "/sys/class/fc_host/%s/port_name" % host] pname = util.pread(cmd)[:-1] pname = util.make_WWN(pname) entry = dom.createElement("portWWN") port.appendChild(entry) # adjust nodename to look like expected string textnode = dom.createTextNode(pname) entry.appendChild(textnode) cmd = ["cat", "/sys/class/fc_host/%s/port_state" % host] state = util.pread(cmd)[:-1] entry = dom.createElement("state") port.appendChild(entry) # adjust nodename to look like expected string textnode = dom.createTextNode(state) entry.appendChild(textnode) entry = dom.createElement("deviceName") port.appendChild(entry) # adjust nodename to look like expected string textnode = dom.createTextNode("/sys/class/scsi_host/%s" % host) entry.appendChild(textnode) return dom.toxml() except: raise xs_errors.XenError('XMLParse', \ opterr='HBA probe failed')
def imp_fake_probe(): dom = xml.dom.minidom.Document() hbalist = dom.createElement("HBAInfoList") dom.appendChild(hbalist) for host in ["host1", "host2"]: hbainfo = dom.createElement("HBAInfo") hbalist.appendChild(hbainfo) sname = "nvme_special" entry = dom.createElement("model") hbainfo.appendChild(entry) textnode = dom.createTextNode(sname) entry.appendChild(textnode) nname = "0x200000e08b18208b" nname = util.make_WWN(nname) entry = dom.createElement("nodeWWN") hbainfo.appendChild(entry) textnode = dom.createTextNode(nname) entry.appendChild(textnode) port = dom.createElement("Port") hbainfo.appendChild(port) pname = "0x500143802426baf4" pname = util.make_WWN(pname) entry = dom.createElement("portWWN") port.appendChild(entry) textnode = dom.createTextNode(pname) entry.appendChild(textnode) state = "toast" entry = dom.createElement("state") port.appendChild(entry) textnode = dom.createTextNode(state) entry.appendChild(textnode) entry = dom.createElement("deviceName") port.appendChild(entry) textnode = dom.createTextNode("/sys/class/scsi_host/%s" % host) entry.appendChild(textnode) return dom.toxml()