self._check_self()
for d in os.listdir("%s/ports/" % self._path):
- yield Port(self, d, 'lookup')
+ yield Port(d, 'lookup')
ports = property(_list_ports,
doc="Get the list of Ports.")
def __repr__(self):
return "<Port %d>" % self.portid
- def __init__(self, root, portid=None, mode='any'):
+ def __init__(self, portid, mode='any'):
super(Port, self).__init__()
- if portid is None:
- portids = [p.portid for p in root.ports]
- for index in xrange(0, 1 << 16):
- if index not in portids:
- portid = index
- break
- if portid is None:
- raise CFSError("All Port IDs 0-%d in use" % 1 << 16)
- else:
- portid = int(portid)
- if portid < 0 or portid > self.MAX_PORTID:
- raise CFSError("Port ID must be 0 to %d" % self.MAX_PORTID)
-
self.attr_groups = ['addr']
- self._portid = portid
- self._path = "%s/ports/%d" % (self.configfs_dir, portid)
+ self._portid = int(portid)
+ self._path = "%s/ports/%d" % (self.configfs_dir, self._portid)
self._create_in_cfs(mode)
def _get_portid(self):
return
try:
- port = Port(root, n['portid'])
+ port = Port(n['portid'])
except CFSError as e:
err_func("Could not create Port object: %s" % e)
return
self.assertTrue(False, 'Found Port after clear')
# create mode
- p1 = nvme.Port(root, portid=0, mode='create')
+ p1 = nvme.Port(portid=0, mode='create')
self.assertIsNotNone(p1)
self.assertEqual(len(list(root.ports)), 1)
# any mode, should create
- p2 = nvme.Port(root, portid=1, mode='any')
+ p2 = nvme.Port(portid=1, mode='any')
self.assertIsNotNone(p2)
self.assertEqual(len(list(root.ports)), 2)
- # automatic portid
- p3 = nvme.Port(root, mode='create')
- self.assertIsNotNone(p3)
- self.assertNotEqual(p3, p1)
- self.assertNotEqual(p3, p2)
- self.assertEqual(len(list(root.ports)), 3)
-
# duplicate
self.assertRaises(nvme.CFSError, nvme.Port,
- root, portid=0, mode='create')
- self.assertEqual(len(list(root.ports)), 3)
+ portid=0, mode='create')
+ self.assertEqual(len(list(root.ports)), 2)
# lookup using any, should not create
- p = nvme.Port(root, portid=0, mode='any')
+ p = nvme.Port(portid=0, mode='any')
self.assertEqual(p1, p)
- self.assertEqual(len(list(root.ports)), 3)
+ self.assertEqual(len(list(root.ports)), 2)
# lookup only
- p = nvme.Port(root, portid=1, mode='lookup')
+ p = nvme.Port(portid=1, mode='lookup')
self.assertEqual(p2, p)
- self.assertEqual(len(list(root.ports)), 3)
-
- # lookup without portid
- self.assertRaises(nvme.CFSError, nvme.Port, root, mode='lookup')
+ self.assertEqual(len(list(root.ports)), 2)
# and delete them all
for p in root.ports:
root.clear_existing()
s = nvme.Subsystem(nqn='testnqn', mode='create')
- p = nvme.Port(root, portid=0, mode='create')
+ p = nvme.Port(portid=0, mode='create')
# subsystem doesn't exists, should fail
self.assertRaises(nvme.CFSError, p.add_subsystem, 'invalidnqn')
root.clear_existing()
# create port
- p = nvme.Port(root, mode='create')
+ p = nvme.Port(portid=1, mode='create')
self.assertEqual(len(list(p.referrals)), 0)
# create mode
nqn=discover_nqn, mode='create')
self.assertRaises(nvme.CFSError, nvme.Port,
- root=root, portid=1 << 17, mode='create')
+ portid=1 << 17, mode='create')
def test_save_restore(self):
root = nvme.Root()
nguid = n.get_attr('device', 'nguid')
- p = nvme.Port(root, portid=66, mode='create')
+ p = nvme.Port(portid=66, mode='create')
p.set_attr('addr', 'trtype', 'loop')
p.set_attr('addr', 'adrfam', 'ipv4')
p.set_attr('addr', 'traddr', '192.168.0.1')
s = nvme.Subsystem(nqn='testnqn', mode='lookup')
s2 = nvme.Subsystem(nqn='testnqn2', mode='lookup')
n = nvme.Namespace(s, nsid=42, mode='lookup')
- p = nvme.Port(root, portid=66, mode='lookup')
+ p = nvme.Port(portid=66, mode='lookup')
self.assertEqual(s.get_attr('attr', 'allow_any_host'), "0")
self.assertEqual(s2.get_attr('attr', 'allow_any_host'), "1")