]> git.proxmox.com Git - ceph.git/blob - ceph/src/ceph-volume/ceph_volume/activate/main.py
import quincy beta 17.1.0
[ceph.git] / ceph / src / ceph-volume / ceph_volume / activate / main.py
1 # -*- coding: utf-8 -*-
2
3 import argparse
4
5 from ceph_volume import terminal
6 from ceph_volume.devices.lvm.activate import Activate as LVMActivate
7 from ceph_volume.devices.raw.activate import Activate as RAWActivate
8 from ceph_volume.devices.simple.activate import Activate as SimpleActivate
9
10
11 class Activate(object):
12
13 help = "Activate an OSD"
14
15 def __init__(self, argv):
16 self.argv = argv
17
18 def main(self):
19 parser = argparse.ArgumentParser(
20 prog='ceph-volume activate',
21 formatter_class=argparse.RawDescriptionHelpFormatter,
22 description=self.help,
23 )
24 parser.add_argument(
25 '--osd-id',
26 help='OSD ID to activate'
27 )
28 parser.add_argument(
29 '--osd-uuid',
30 help='OSD UUID to active'
31 )
32 parser.add_argument(
33 '--no-systemd',
34 dest='no_systemd',
35 action='store_true',
36 help='Skip creating and enabling systemd units and starting OSD services'
37 )
38 parser.add_argument(
39 '--no-tmpfs',
40 action='store_true',
41 help='Do not use a tmpfs mount for OSD data dir'
42 )
43 self.args = parser.parse_args(self.argv)
44
45 # first try raw
46 try:
47 RAWActivate([]).activate(
48 devs=None,
49 start_osd_id=self.args.osd_id,
50 start_osd_uuid=self.args.osd_uuid,
51 tmpfs=not self.args.no_tmpfs,
52 systemd=not self.args.no_systemd,
53 block_wal=None,
54 block_db=None,
55 )
56 return
57 except Exception as e:
58 terminal.info(f'Failed to activate via raw: {e}')
59
60 # then try lvm
61 try:
62 LVMActivate([]).activate(
63 argparse.Namespace(
64 osd_id=self.args.osd_id,
65 osd_fsid=self.args.osd_uuid,
66 no_tmpfs=self.args.no_tmpfs,
67 no_systemd=self.args.no_systemd,
68 )
69 )
70 return
71 except Exception as e:
72 terminal.info(f'Failed to activate via lvm: {e}')
73
74 # then try simple
75 try:
76 SimpleActivate([]).activate(
77 argparse.Namespace(
78 osd_id=self.args.osd_id,
79 osd_fsid=self.args.osd_uuid,
80 no_systemd=self.args.no_systemd,
81 )
82 )
83 return
84 except Exception as e:
85 terminal.info(f'Failed to activate via simple: {e}')
86
87 terminal.error('Failed to activate any OSD(s)')