]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | """ |
2 | Upgrade cluster snap format. | |
3 | """ | |
4 | ||
5 | import logging | |
6 | import time | |
7 | ||
8 | from tasks.cephfs.filesystem import Filesystem | |
9 | ||
10 | log = logging.getLogger(__name__) | |
11 | ||
12 | def task(ctx, config): | |
13 | """ | |
14 | Upgrade CephFS file system snap format. | |
15 | """ | |
16 | ||
17 | if config is None: | |
18 | config = {} | |
19 | assert isinstance(config, dict), \ | |
20 | 'snap-upgrade task only accepts a dict for configuration' | |
21 | ||
22 | fs = Filesystem(ctx) | |
23 | ||
24 | mds_map = fs.get_mds_map() | |
25 | assert(mds_map['max_mds'] == 1) | |
26 | ||
27 | json = fs.rank_tell(["scrub", "start", "/", "force", "recursive", "repair"]) | |
28 | if not json or json['return_code'] == 0: | |
29 | log.info("scrub / completed") | |
30 | else: | |
31 | log.info("scrub / failed: {}".format(json)) | |
32 | ||
33 | json = fs.rank_tell(["scrub", "start", "~mdsdir", "force", "recursive", "repair"]) | |
34 | if not json or json['return_code'] == 0: | |
35 | log.info("scrub ~mdsdir completed") | |
36 | else: | |
37 | log.info("scrub / failed: {}".format(json)) | |
38 | ||
39 | for i in range(0, 10): | |
40 | mds_map = fs.get_mds_map() | |
41 | if (mds_map['flags'] & (1<<1)) != 0 and (mds_map['flags'] & (1<<4)) != 0: | |
42 | break | |
43 | time.sleep(10) | |
44 | assert((mds_map['flags'] & (1<<1)) != 0) # Test CEPH_MDSMAP_ALLOW_SNAPS | |
45 | assert((mds_map['flags'] & (1<<4)) != 0) # Test CEPH_MDSMAP_ALLOW_MULTIMDS_SNAPS |