in scripts/build_storage.py [0:0]
def main():
parser = argparse.ArgumentParser(description='Build EBS storage config')
parser.add_argument('-config', dest="config",metavar="FILE",required = True,
help='JSON containing master storage config')
parser.add_argument('-ismaster', dest="ismaster",metavar="INT",required = True,
help='Is this master node or not ?')
parser.add_argument('-hostcount', dest="hostcount",metavar="INT",required = True,
help='Total Hostcount?')
parser.add_argument('-which', dest="which",metavar="STRING",required = True,
help='Which Storage? [backup,hana_data,hana_log,shared,usr_sap,media]')
parser.add_argument('-instance_type', dest="instance_type",metavar="STRING",required = True,
help='Which instance_type?')
parser.add_argument('-storage_type', dest="storage_type",metavar="STRING",required = True,
help='Which storage_type?')
args = parser.parse_args()
config = args.config
ismaster = int(args.ismaster)
hostcount = int(args.hostcount)
which = args.which
instance_type = args.instance_type
storage_type = args.storage_type
if not os.path.isfile(config):
print('Storage config file ' + config + ' Invalid!')
print('ERROR: Cannot build storage')
return
if ismaster != 1 and which == 'backup':
print('Backup storage valid only on HANA master')
print('WARNING: Did not build backup storage on worker')
return
if ismaster != 1 and which == 'shared':
print('Shared storage valid only on HANA master')
print('WARNING: Did not build shared storage on worker')
return
if ismaster != 1 and which == 'media':
print('Media storage valid only on HANA master')
print('WARNING: Did not build shared storage on worker')
return
with open(config) as f:
config_json = json.loads(f.read())
if which == 'backup':
drives = get_backup_drives(config_json,hostcount,instance_type,storage_type)
for d in drives:
device = d['device']
io_type = storage_type
size = d['size'].replace("G","")
tag = 'SAP-HANA-Backup'
create_attach_ebs(device,io_type,size,tag,None)
if os.path.isfile(nvme_device_id):
nvme_device = open(nvme_device_id, 'r').read().rstrip()
d['device'] = '"'+nvme_device+'"'
create_backup_volgrp(drives)
stripe_backup_vol(drives)
return
if which == 'hana_data':
drives = config_json['hana_data']['master_worker'][instance_type][storage_type]['drives']
stripe = config_json['hana_data']['master_worker'][instance_type][storage_type]['stripe']
for d in drives:
device = d['device']
io_type = storage_type
piops = None
if 'piops' in d:
piops = d['piops']
size = d['size'].replace("G","")
tag = 'HANA-Data'
create_attach_ebs(device,io_type,size,tag,piops)
if os.path.isfile(nvme_device_id):
nvme_device = open(nvme_device_id, 'r').read().rstrip()
d['device'] = '"'+nvme_device+'"'
create_hanadata_volgrp(drives)
count = len(drives)
stripe_hanadata_vol(stripe,count)
return
if which == 'hana_log':
drives = config_json['hana_log']['master_worker'][instance_type][storage_type]['drives']
stripe = config_json['hana_log']['master_worker'][instance_type][storage_type]['stripe']
for d in drives:
device = d['device']
io_type = storage_type
piops = None
if 'piops' in d:
piops = d['piops']
size = d['size'].replace("G","")
tag = 'HANA-Log'
create_attach_ebs(device,io_type,size,tag,piops)
if os.path.isfile(nvme_device_id):
nvme_device = open(nvme_device_id, 'r').read().rstrip()
d['device'] = '"'+nvme_device+'"'
create_hanalog_volgrp(drives)
count = len(drives)
stripe_hanalog_vol(stripe,count)
return
if which == 'shared':
drives = config_json['shared']['master'][instance_type][storage_type]['drives']
if len(drives) == 1:
for d in drives:
device = d['device']
io_type = storage_type
size = d['size'].replace("G","")
tag = 'SAP-HANA-Shared'
piops = None
if 'piops' in d:
piops = d['piops']
create_attach_single_ebs(device,io_type,size,tag,piops)
if os.path.isfile(nvme_device_id):
device = open(nvme_device_id, 'r').read().rstrip()
else:
device = drives[0]['device'].replace('/dev/s','/dev/xv')
mkfs_cmd = ' mkfs.xfs -f ' + device + ' -L HANA_SHARE '
exe_cmd(mkfs_cmd)
print(mkfs_cmd)
else:
for d in drives:
device = d['device']
io_type = storage_type
size = d['size'].replace("G","")
tag = 'SAP-HANA-Shared'
piops = None
if 'piops' in d:
piops = d['piops']
create_attach_ebs(device,io_type,size,tag,piops)
if os.path.isfile(nvme_device_id):
nvme_device = open(nvme_device_id, 'r').read().rstrip()
d['device'] = '"'+nvme_device+'"'
create_hanashared_volgrp(drives)
stripe_hanashared_vol(drives)
return
if which == 'usr_sap':
if ismaster == 1:
drives = config_json['usr_sap']['master'][instance_type][storage_type]['drives']
else:
drives = config_json['usr_sap']['worker'][instance_type][storage_type]['drives']
for d in drives:
device = d['device']
io_type = storage_type
size = d['size'].replace("G","")
tag = 'SAP-HANA-USR-SAP'
piops = None
if 'piops' in d:
piops = d['piops']
create_attach_single_ebs(device,io_type,size,tag,piops)
if os.path.isfile(nvme_device_id):
device = open(nvme_device_id, 'r').read().rstrip()
else:
device = drives[0]['device'].replace('/dev/s','/dev/xv')
mkfs_cmd = 'mkfs.xfs -f ' + device + ' -L USR_SAP '
exe_cmd(mkfs_cmd)
print(mkfs_cmd)
return
if which == 'media':
if ismaster == 1:
drives = config_json['media']['master'][storage_type]['drives']
for d in drives:
device = d['device']
io_type = storage_type
size = d['size'].replace("G","")
tag = 'SAP-HANA-MEDIA'
piops = None
if 'piops' in d:
piops = d['piops']
create_attach_single_ebs(device,io_type,size,tag,piops)
if os.path.isfile(nvme_device_id):
device = open(nvme_device_id, 'r').read().rstrip()
else:
device = drives[0]['device'].replace('/dev/s','/dev/xv')
mkfs_cmd = 'mkfs.xfs -f ' + device + ' -L HANA_MEDIA '
exe_cmd(mkfs_cmd)
print(mkfs_cmd)
return