randomly-stop-osd/main.py
2024-06-13 23:31:57 +03:00

79 lines
2.8 KiB
Python

import random
import subprocess
import os
import sys
import argparse
def write_numbers_to_file(a, b, c):
with open(os.path.join(output_dir, "numbers.txt"), "w+") as f:
srv_list = random.sample(range(a, b), c)
for count, value in enumerate(srv_list):
f.write(str(value) + '\n')
def starting_osd():
with open(os.path.join(output_dir, "numbers.txt"), "r") as f:
for line in f:
# print(f'systemctl start ceph-{ceph_fsid}@osd.{line.strip()}.service')
p = subprocess.run(f'systemctl start ceph-{args.fsid}@osd.{line}', shell=True, capture_output=True)
if p.stderr.decode():
print(p.stderr.decode().strip())
else:
print(f'systemctl start ceph-{args.fsid}@osd.{line.rstrip()}.service started')
def stopping_osd():
with open(os.path.join(output_dir, "numbers.txt"), "r") as f:
for line in f:
# print(f'systemctl stop ceph-{ceph_fsid}@osd.{line.strip()}.service')
p = subprocess.run(f'systemctl stop ceph-{args.fsid}@osd.{line}', shell=True, capture_output=True)
if p.stderr.decode():
print(p.stderr.decode().strip())
else:
print(f'systemctl stop ceph-{args.fsid}@osd.{line.rstrip()}.service stopped')
def show_file():
with open(os.path.join(output_dir, "numbers.txt"), "r") as f:
for line in f:
print(f'systemctl stop|start ceph-{args.fsid}@osd.{line.strip()}')
if __name__ == '__main__':
# ceph_fsid = "7461bfe8-dc87-11ee-898a-7b25c28deba6"
output_dir = os.getcwd()
parser = argparse.ArgumentParser(description="Randomly start|stop OSDs")
parser.add_argument('--show', action='store_true', help="Just show the commands the program prepared to run up")
parser.add_argument('--fsid', type=str, default='kek', help='FSID of a cluster', required=True)
args = parser.parse_args()
if args.show:
show_file()
sys.exit()
inp = input("Create random numbers of OSD?: y\\n: ")
if inp == "y":
try:
frst_inp = int(input("Enter the first border of range: "))
scnd_inp = int(input(f" The first number of range is {frst_inp} and the second?: "))
thrd_inp = int(input(" The numbers of samples, please: "))
write_numbers_to_file(frst_inp, scnd_inp, thrd_inp)
except ValueError:
print(" Not an int!")
sys.exit()
elif inp == "n":
print("Be sure that file already exists. ")
else:
print(" do not fuck with me. Exiting")
sys.exit()
inp = input("What we gonna do? start|stop ?: ")
if inp == "start":
starting_osd()
elif inp == "stop":
stopping_osd()
else:
print(" Вы ввели хуйню")