Coverage for curator/singletons.py: 98%

65 statements  

« prev     ^ index     » next       coverage.py v7.3.0, created at 2023-08-16 15:27 -0600

1"""CLI module for curator_cli""" 

2import os 

3import logging 

4import click 

5from curator.defaults import settings 

6from curator.config_utils import test_config, set_logging 

7from curator.utils import test_client_options 

8from curator.cli_singletons.utils import config_override, false_to_none, get_width 

9from curator.cli_singletons.alias import alias 

10from curator.cli_singletons.allocation import allocation 

11from curator.cli_singletons.close import close 

12from curator.cli_singletons.delete import delete_indices, delete_snapshots 

13from curator.cli_singletons.forcemerge import forcemerge 

14from curator.cli_singletons.open_indices import open_indices 

15from curator.cli_singletons.replicas import replicas 

16from curator.cli_singletons.restore import restore 

17from curator.cli_singletons.rollover import rollover 

18from curator.cli_singletons.snapshot import snapshot 

19from curator.cli_singletons.shrink import shrink 

20from curator.cli_singletons.show import show_indices, show_snapshots 

21from curator._version import __version__ 

22 

23@click.group(context_settings=get_width()) 

24@click.option( 

25 '--config', help='Path to configuration file. Default: ~/.curator/curator.yml', 

26 type=click.Path(), default=settings.config_file() 

27) 

28@click.option('--host', help='Elasticsearch host.') 

29@click.option('--url_prefix', help='Elasticsearch http url prefix.') 

30@click.option('--port', help='Elasticsearch port.') 

31@click.option( 

32 '--use_ssl', is_flag=True, 

33 callback=false_to_none, help='Connect to Elasticsearch through SSL.' 

34) 

35@click.option('--certificate', help='Path to certificate to use for SSL validation.') 

36@click.option( 

37 '--client-cert', help='Path to file containing SSL certificate for client auth.', type=str) 

38@click.option('--client-key', help='Path to file containing SSL key for client auth.', type=str) 

39@click.option( 

40 '--ssl-no-validate', is_flag=True, 

41 callback=false_to_none, help='Do not validate SSL certificate' 

42) 

43@click.option( 

44 '--http_auth', 

45 help='Use Basic Authentication ex: user:pass -- DEPRECATED. Use username and password.' 

46) 

47@click.option('--username', help='HTTP Basic Authentication username', type=str) 

48@click.option('--password', help='HTTP Basic Authentication password', type=str) 

49@click.option( 

50 '--apikey_auth', 

51 help='API Key Authentication encoded in base64 containing `id:api_key`', 

52 type=str 

53) 

54@click.option('--timeout', help='Connection timeout in seconds.', type=int) 

55@click.option( 

56 '--master-only', is_flag=True, callback=false_to_none, 

57 help='Only operate on elected master node.' 

58) 

59@click.option('--dry-run', is_flag=True, help='Do not perform any changes.') 

60@click.option('--loglevel', help='Log level') 

61@click.option('--logfile', help='log file') 

62@click.option('--logformat', help='Log output format [default|logstash|json|ecs].') 

63@click.version_option(version=__version__) 

64@click.pass_context 

65def cli( 

66 ctx, config, host, url_prefix, port, use_ssl, certificate, client_cert, client_key, 

67 ssl_no_validate, http_auth, username, password, apikey_auth, timeout, master_only, dry_run, loglevel, 

68 logfile, logformat 

69 ): 

70 """CLI input""" 

71 if os.path.isfile(config): 

72 initial_config = test_config(config) 

73 else: 

74 initial_config = None 

75 configuration = config_override(ctx, initial_config) 

76 set_logging(configuration['logging']) 

77 test_client_options(configuration['client']) 

78 ctx.obj['config'] = configuration 

79 ctx.obj['dry_run'] = dry_run 

80# Add the subcommands 

81cli.add_command(alias) 

82cli.add_command(allocation) 

83cli.add_command(close) 

84cli.add_command(delete_indices) 

85cli.add_command(delete_snapshots) 

86cli.add_command(forcemerge) 

87cli.add_command(open_indices) 

88cli.add_command(replicas) 

89cli.add_command(snapshot) 

90cli.add_command(restore) 

91cli.add_command(rollover) 

92cli.add_command(shrink) 

93cli.add_command(show_indices) 

94cli.add_command(show_snapshots)