它正确地删除了第一个循环中的所有内容,但是在删除第二个循环中的快照时抛出了这个,知道为什么吗?我可能一直在运行Python3,现在又回到了2.7,这是我的问题吗?它似乎从列表中删除了一个项目,然后再也无法删除。在
for i in range(0, numOfSnap):
tempName = baseVv.name + ".ro" + str(i)
snapVv = baseVv.createSv(name=baseVv.name + ".ro" + str(i), svOptions="-ro -i %s" % x)
x += 1
dlog.info("Creating %s" % tempName)
baseVv.name + ".rw" + str(i)
tempName = baseVv.name + ".rw" + str(i)
rwSnap = snapVv.createSv(name=baseVv.name + ".rw" + str(i), svOptions="-i %s" % x)
x += 1
snapRwVlun = self.cluster.createVlun(vv=rwSnap, host=host)
dlog.info("Creating %s" % tempName)
rwSnapList.append(rwSnap)
vlunList.append(snapRwVlun)
## delay random seconds between RO snapshot creation
time.sleep(random.randint(5,30))
snapRoList = baseVv.snapSvList
dlog.info("Stopping IO on VV")
self.cluster.stopSnapIOOnHosts()
dlog.info("Starting IO on snaps and VV")
self.cluster.startSnapIOOnHosts()
dlog.info("Sleep 60 seconds for IO to go through")
time.sleep(60)
dlog.info("Stopping IO")
self.cluster.stopSnapIOOnHosts()
time.sleep(60)
for vluns in vlunList:
vluns.remove()
dlog.info("Waiting 60 seconds")
time.sleep(60)
## randomly pick 1 rw snapshot to delete till removal of all snapshot
for i in range(0, numOfSnap)[:]:
snapIndex = random.randint(0, len(rwSnapList)-1)
dlog.info("remove %s" % rwSnapList[snapIndex].name)
roSnapshot = rwSnapList[snapIndex]
roSnapshot.remove()
#self.cluster.waitForClusterIntegrated()
## remove it from object list
rwSnapList.remove(roSnapshot)
time.sleep(random.randint(5,10))
## randomly pick 1 ro snapshot to delete till removal of all snapshot
for i in range(0, numOfSnap)[:]:
snapIndex = random.randint(0, len(snapRoList)-1)
dlog.info("remove %s" % snapRoList[snapIndex].name)
roSnapshot = snapRoList[snapIndex]
roSnapshot.remove()
#self.cluster.waitForClusterIntegrated()
## remove it from object list
snapRoList.remove(roSnapshot)
time.sleep(random.randint(5,10))
你为什么要费劲从列表中删除它们呢?你只想在所有的机器上调用
.remove()
?在与其从快照列表中随机选取一个索引,随机移动列表一次并从该无序列表中弹出项目:
通过对要从中删除的列表使用
while
循环测试,可以保证当列表为空时循环将终止。在因为列表是无序排列的,所以按随机顺序处理这些项。在
相关问题 更多 >
编程相关推荐