Browse code

Adding parameters to the partitioning script to accept swap and docker partitions size

Mahmoud Bassiouny authored on 2015/08/13 10:27:48
Showing 1 changed files
... ...
@@ -5,10 +5,23 @@ import re
5 5
 PRE_INSTALL = "pre-install"
6 6
 POST_INSTALL = "post-install"
7 7
 
8
-def partition_disk(disk):
8
+def partition_disk(disk, docker_partition_size = None, swap_partition_size = None):
9 9
     partitions_data = {}
10 10
     partitions_data['disk'] = disk
11
-    partitions_data['root'] = disk + '2'
11
+
12
+    root_partition_number = 2
13
+    curr_partition_number = root_partition_number
14
+    partitions_data['root'] = disk + `root_partition_number`
15
+
16
+    if docker_partition_size != None:
17
+        docker_partition_number = curr_partition_number + 1
18
+        curr_partition_number = curr_partition_number + 1
19
+        partitions_data['docker'] = disk + `docker_partition_number`
20
+
21
+    if swap_partition_size != None:
22
+        swap_partition_number = curr_partition_number + 1
23
+        curr_partition_number = curr_partition_number + 1
24
+        partitions_data['swap'] = disk + `swap_partition_number`
12 25
 
13 26
     output = open(os.devnull, 'w')
14 27
 
... ...
@@ -18,23 +31,44 @@ def partition_disk(disk):
18 18
     if retval != 0:
19 19
     	return None
20 20
 
21
-    # 1: grub, 2: filesystem
22
-    process = subprocess.Popen(['sgdisk', '-n', '1::+2M', '-n', '2:', '-p', partitions_data['disk']], stdout = output)
21
+
22
+    partition_cmd = ['sgdisk', '-n', '1::+2M']
23
+    if swap_partition_size != None:
24
+        partition_cmd.extend(['-n', '{}:-{}M'.format(swap_partition_number, swap_partition_size)])
25
+    if docker_partition_size != None:
26
+        partition_cmd.extend(['-n', '{}:-{}M'.format(docker_partition_number, docker_partition_size)])       
27
+    partition_cmd.extend(['-n', `root_partition_number`, '-p', partitions_data['disk']])
28
+
29
+    process = subprocess.Popen(partition_cmd, stdout = output)
23 30
     retval = process.wait()
24 31
     if retval != 0:
25
-    	return None
32
+        return None
26 33
 
27 34
     # Add the grub flags
28 35
     process = subprocess.Popen(['sgdisk', '-t1:ef02', partitions_data['disk']], stdout = output)
29 36
     retval = process.wait()
30 37
     if retval != 0:
31
-    	return None
38
+        return None
32 39
 
33 40
     # format the file system
34 41
     process = subprocess.Popen(['mkfs', '-t', 'ext4', partitions_data['root']], stdout = output)
35 42
     retval = process.wait()
36 43
     if retval != 0:
37
-    	return None
44
+        return None
45
+
46
+    # format the docker partition
47
+    if docker_partition_size != None:
48
+        process = subprocess.Popen(['mkfs', '-t', 'ext4', partitions_data['docker']], stdout = output)
49
+        retval = process.wait()
50
+        if retval != 0:
51
+            return None 
52
+
53
+    # format the swap partition
54
+    if swap_partition_size != None:
55
+        process = subprocess.Popen(['mkswap', partitions_data['swap']], stdout = output)
56
+        retval = process.wait()
57
+        if retval != 0:
58
+            return None
38 59
     	
39 60
     return partitions_data
40 61