Completed
Pull Request — master (#403)
by Edward
01:59
created

list_seed_nodes()   D

Complexity

Conditions 8

Size

Total Lines 24

Duplication

Lines 0
Ratio 0 %
Metric Value
cc 8
dl 0
loc 24
rs 4.3478
1
#!/usr/bin/env python2.7
2
3
import argparse
4
import os
5
import sys
6
7
try:
8
    import yaml
9
except ImportError:
10
    sys.stderr.write('Script requires pyyaml to be installed. ' +
11
                     '``pip install pyyaml``')
12
    raise
13
14
15
def list_seed_nodes(config_file):
16
    if not os.path.exists(config_file):
17
        msg = 'Config file %s not found.' % config_file
18
        sys.stderr.write(msg)
19
        raise Exception(msg)
20
21
    if os.access(config_file, os.R_OK):
22
        all_seeds = []
23
        with open(config_file) as f:
24
            conf = yaml.safe_load(f)
25
            seed_providers = conf['seed_provider']
26
27
            for seed_provider in seed_providers:
28
                params = seed_provider.get('parameters', None)
29
                if params:
30
                    for param in params:
31
                        seeds = param.get('seeds', None)
32
                        if seeds:
33
                            all_seeds.append(seeds)
34
        return all_seeds
35
    else:
36
        msg = 'No permissions to read config file: %s.' % config_file
37
        sys.stderr.write(msg)
38
        raise Exception(msg)
39
40
if __name__ == '__main__':
41
    parser = argparse.ArgumentParser(description='Cassandra config parser.')
42
    parser.add_argument('--config-file', '-f', required=True,
43
                        help='Path to cassandra config file.'),
44
    parser.add_argument('--delimiter', '-d', required=False, default=',',
45
                        help='Delimiter to use for output.')
46
    args = parser.parse_args()
47
48
    all_seeds = list_seed_nodes(args.config_file)
49
    print(args.delimiter.join(all_seeds))
50