def _root_pv_name(res, pv_name):
if not is_nested_pv(pv_name):
return pv_name
- vg_name = pv_name.split('/')[2:3][0]
+ vg_name = pv_name.split('/')[2]
for v in res[VG_INT]:
if v.Vg.Name == vg_name:
pv = ClientProxy(bus, v.Vg.Pvs[0], interfaces=(PV_INT, ))
for object_path, v in objects.items():
proxy = ClientProxy(bus, object_path, v)
- for interface, prop in v.items():
+ for interface in v.keys():
rc[interface].append(proxy)
# At this point we have a full population of everything, we now need to
cmd = ['pvcreate', target.Pv.Name]
self._verify_existence(cmd, cmd[0], target.Pv.Name)
+ def _create_nested(self, pv_object_path):
+ vg = self._vg_create([pv_object_path])
+ pv = ClientProxy(self.bus, pv_object_path, interfaces=(PV_INT,))
+
+ self.assertEqual(pv.Pv.Vg, vg.object_path)
+ self.assertIn(pv_object_path, vg.Vg.Pvs,
+ "Expecting PV object path in Vg.Pvs")
+
+ lv = self._create_lv(vg=vg.Vg, size=vg.Vg.FreeBytes)
+ device_path = '/dev/%s/%s' % (vg.Vg.Name, lv.LvCommon.Name)
+ new_pv_object_path = self._pv_create(device_path)
+
+ vg.update()
+
+ self.assertEqual(lv.LvCommon.Vg, vg.object_path)
+ self.assertIn(lv.object_path, vg.Vg.Lvs,
+ "Expecting LV object path in Vg.Lvs")
+
+ new_pv_proxy = ClientProxy(self.bus,
+ new_pv_object_path,
+ interfaces=(PV_INT, ))
+ self.assertEqual(new_pv_proxy.Pv.Name, device_path)
+
+ return new_pv_object_path
+
+ def test_nesting(self):
+ # check to see if we handle an LV becoming a PV which has it's own
+ # LV
+ pv_object_path = self.objs[PV_INT][0].object_path
+
+ for i in range(0, 5):
+ pv_object_path = self._create_nested(pv_object_path)
+
class AggregateResults(object):