Newer
Older
#!/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()
if args.wal == None or args.db == None or args.data == None:
print("Required arguments not provided. Exit.")
sys.exit(1)
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)
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)
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
#sys.exit(0)
#pvcreate /dev/sdc
#vgcreate disk2_journal /dev/sdc
#lvcreate -L1G -n sdb_wal disk2_journal
#lvcreate -L10G -n sdb_db disk2_journal
pattern = re.compile("^\d+(%FREE|K|M|G|T|P)$")
if pattern.match(args.wal) and 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):
# 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)
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.wal+" -n "+dev+"_wal "+vg_name_ssd)
os.system("echo lvcreate -L"+args.db+" -n "+dev+"_db "+vg_name_ssd)