Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/usr/bin/python
import re
import os
import sys
import argparse
import subprocess
import socket
try:
myfullpath = os.path.dirname(os.path.realpath(__file__))
except NameError:
myfullpath = os.path.abspath(os.path.curdir)
parser = argparse.ArgumentParser(description='Perform standalone CEPH installation.')
parser.add_argument('-t','--data', help='Data partition size')
parser.add_argument('-w','--wal', help='Wal partition size')
parser.add_argument('-d','--db', help='DB partition size')
parser.add_argument('-s','--ssd', help='ssd disks wal and db partitions')
args = parser.parse_args()
#We allow for implicit WAL
if args.db == None or args.data == None:
print("Required arguments not provided. Exit.")
print ("python disk-partitions.py --data <size> --db <size> --ssd /dev/<ssd block device>")
print ("E.g.")
print ("python disk-partitions.py --data 100%FREE --db 80G --ssd /dev/sdz")
sys.exit(1)
dry_run = True
s = args.ssd
ssd_list = []
if len(s) == 0 :
print("No ssd disks provided")
else:
tmp = s.split(',')
for t in tmp:
try:
os.stat(t)
except OSError:
print("Device %s doesn't exists. Exit."%t)
sys.exit(-1)
ssd_list.append(t)
ssd_string=""
for s in ssd_list:
ssd_string = ssd_string + s + " "
os.system("echo pvcreate "+ssd_string)
if not(dry_run):
os.system("pvcreate "+ssd_string)
hostname = socket.gethostname().split('.')[0]
vg_name_ssd = hostname+"_journal"
os.system("echo vgcreate "+vg_name_ssd+" "+ssd_string)
if not(dry_run):
os.system("vgcreate "+vg_name_ssd+" "+ssd_string)
#sys.exit(0)
pattern = re.compile("^\d+(%FREE|K|M|G|T|P)$")
#print args
if pattern.match(args.db) and pattern.match(args.data):
# CREATE JBOD DISKS MAP IF DOES NOT EXIST
fn = os.path.join(myfullpath,'diskPosition2.out')
if not os.path.isfile(fn):
print "Building disk list"
os.system(myfullpath+"/diskPosition2 > "+myfullpath+"/diskPosition2.out")
#os.system(myfullpath+"/diskPosition2 > "+myfullpath+"/diskPosition2.out")
# OPEN JBOD DISKS MAP FILE
with open(fn, 'r') as f:
lines = f.readlines()
# CREATE PARTITIONS FOR CEPH OSDS AND UPDATE PUPPET CONFIGURATION
sed_string=""
for i in range(0,len(lines),3):
#print lines[i]
res_dev = re.search(r"/sys/block/[a-z]+",lines[i])
res_bayid = re.search(r"BayID: \d+", lines[i])
res_sn = re.search(r"Serial number: \w+",lines[i])
res_vnd = re.search(r"Vendor: \w+", lines[i])
res_prd = re.search(r"Product: \w+", lines[i])
dev = str(re.search(r"\wd[a-z]+",res_dev.group()).group())
bayid = int(re.search(r"\d+",res_bayid.group()).group())
sn = str(re.search(r" \w+",res_sn.group()).group()).strip()
vnd = str(re.search(r" \w+",res_vnd.group()).group()).strip()
prd = str(re.search(r" \w+",res_prd.group()).group()).strip()
#os.system("pvcreate /dev/"+dev)
#os.system("vgcreate "+str(bayid)+"-"+sn+"-"+vnd+"-"+prd+" /dev/"+dev)
#os.system("lvcreate -L"+args.data+" -n "+dev+"_data "+str(bayid)+"-"+sn+"-"+vnd+"-"+prd)
#os.system("lvcreate -L"+args.wal+" -n "+dev+"_wal "+str(bayid)+"-"+sn+"-"+vnd+"-"+prd)
#os.system("lvcreate -L"+args.db+" -n "+dev+"_db "+str(bayid)+"-"+sn+"-"+vnd+"-"+prd)
os.system("echo pvcreate /dev/"+dev)
if not(dry_run):
os.system("pvcreate /dev/"+dev)
os.system("echo vgcreate "+str(bayid)+"-"+sn+"-"+vnd+"-"+prd+" /dev/"+dev)
if not(dry_run):
os.system("vgcreate "+str(bayid)+"-"+sn+"-"+vnd+"-"+prd+" /dev/"+dev)
if ('FREE' in args.data):
os.system("echo lvcreate -l"+args.data+" -n "+dev+"_data "+str(bayid)+"-"+sn+"-"+vnd+"-"+prd)
if not(dry_run):
os.system("lvcreate -l"+args.data+" -n "+dev+"_data "+str(bayid)+"-"+sn+"-"+vnd+"-"+prd)
else:
os.system("echo lvcreate -L"+args.data+" -n "+dev+"_data "+str(bayid)+"-"+sn+"-"+vnd+"-"+prd)
if not(dry_run):
os.system("lvcreate -L"+args.data+" -n "+dev+"_data "+str(bayid)+"-"+sn+"-"+vnd+"-"+prd)
os.system("echo lvcreate -L"+args.db+" -n "+dev+"_db "+vg_name_ssd)
if not(dry_run):
os.system("lvcreate -L"+args.db+" -n "+dev+"_db "+vg_name_ssd)