Browse code

Fixed logic to launch maximum parallel threads on host at a time

Divya Thaluru authored on 2015/05/29 08:20:55
Showing 2 changed files
... ...
@@ -1,11 +1,9 @@
1 1
 import subprocess
2 2
 from Logger import Logger
3
-#from ToolChainUtils import ToolChainUtils
4 3
 from CommandUtils import CommandUtils
5 4
 import os
6 5
 import threading
7 6
 import time
8
-from time import sleep
9 7
 from constants import constants
10 8
 
11 9
 chrootRootPath="/mnt"
... ...
@@ -17,6 +15,7 @@ class ChrootUtils(object):
17 17
     lockForCreateChroot=threading.Lock()
18 18
     activeChroots=[]
19 19
     failureFlag=False
20
+    numChroots=1
20 21
     
21 22
     def __init__(self,logName=None,logPath=None):
22 23
         if logName is None:
... ...
@@ -37,6 +36,18 @@ class ChrootUtils(object):
37 37
         ChrootUtils.lockForCounter.release()
38 38
         return chrootID
39 39
     
40
+    def updateParams(self):
41
+        process = subprocess.Popen(["df" ,chrootRootPath],shell=True,stdout=subprocess.PIPE)
42
+        retval = process.wait()
43
+        if retval != 0:
44
+            self.logger.error("Unable to check free space. Unknown error.")
45
+            return False
46
+        output = process.communicate()[0]
47
+        device, size, used, available, percent, mountpoint = output.split("\n")[1].split()
48
+        c =  int(available)/600000
49
+        ChrootUtils.numChroots=int(c)
50
+        self.logger.info("Updated number of chroots:"+str(ChrootUtils.numChroots))
51
+    
40 52
     def checkFreeSpace(self):
41 53
         process = subprocess.Popen(["df" ,chrootRootPath],shell=True,stdout=subprocess.PIPE)
42 54
         retval = process.wait()
... ...
@@ -64,10 +75,10 @@ class ChrootUtils(object):
64 64
         freeSpaceAvailable=False
65 65
         while currentTime < startTime + timeOut:
66 66
             #if self.checkFreeSpace():
67
-            if len(ChrootUtils.activeChroots) < 2:
67
+            if len(ChrootUtils.activeChroots) < ChrootUtils.numChroots:
68 68
                 freeSpaceAvailable=True
69 69
                 break
70
-            sleep(100)
70
+            time.sleep(100)
71 71
             
72 72
         if not freeSpaceAvailable:
73 73
             self.logger.error("Unable to create chroot. No sufficient free space is available.")
... ...
@@ -6,6 +6,7 @@ from CommandUtils import CommandUtils
6 6
 from Logger import Logger
7 7
 from constants import constants
8 8
 from PackageManager import PackageManager 
9
+from ChrootUtils import ChrootUtils
9 10
 
10 11
 def main():
11 12
     usage = "Usage: %prog [options] <package name>"
... ...
@@ -67,6 +68,8 @@ def main():
67 67
     
68 68
     listPackages1=["nano","swig","wget"]
69 69
 
70
+    chrUtils = ChrootUtils()
71
+    chrUtils.updateParams()
70 72
     pkgManager = PackageManager()
71 73
     pkgManager.buildPackages(listPackages)
72 74