1#!/usr/bin/env python3 2""" 3Quickstart for creating an/or extending the functionality of your SaltStack installation 4 5 usage: salt-extend [-h] [--extension EXTENSION] 6 [--salt-directory SALT_DIRECTORY] [--name NAME] 7 [--description DESCRIPTION] [--no-merge] 8 9 optional arguments: 10 -h, --help show this help message and exit 11 --extension EXTENSION, -e EXTENSION 12 Extension type, e.g. 'module', 'state'. 13 --salt-directory SALT_DIRECTORY, -o SALT_DIRECTORY 14 Directory where your salt installation is kept 15 (defaults to .). 16 --name NAME, -n NAME Module name. 17 --description DESCRIPTION, -d DESCRIPTION 18 Short description of what the module does. 19 --no-merge Don't merge the module into the salt directory, keep 20 in a temp location 21""" 22import logging 23import sys 24 25from salt.scripts import salt_extend 26 27PY26 = sys.version_info[0] == 2 and sys.version_info[1] == 6 28 29 30def _parse_args_argparse(): 31 import argparse 32 33 parser = argparse.ArgumentParser( 34 description="Quickly boilerplate an extension to SaltStack" 35 ) 36 parser.add_argument( 37 "--extension", "-e", help="Extension type, e.g. 'module', 'state'." 38 ) 39 parser.add_argument( 40 "--salt-directory", 41 "-o", 42 help="Directory where your salt installation is kept (defaults to .).", 43 ) 44 parser.add_argument("--name", "-n", help="Module name.") 45 parser.add_argument( 46 "--description", "-d", help="Short description of what the module does." 47 ) 48 parser.add_argument( 49 "--no-merge", 50 help="Don't merge the module into the salt directory, keep in a temp location", 51 action="store_true", 52 ) 53 parser.add_argument( 54 "--debug", 55 help="Display detailed logs whilst applying templates", 56 action="store_true", 57 ) 58 return parser.parse_args() 59 60 61def _parse_args_optparse(): 62 from optparse import OptionParser 63 64 parser = OptionParser(usage="Quickly boilerplate an extension to SaltStack") 65 parser.add_option( 66 "--extension", "-e", help="Extension type, e.g. 'module', 'state'." 67 ) 68 parser.add_option( 69 "--salt-directory", 70 "-o", 71 help="Directory where your salt installation is kept (defaults to .).", 72 ) 73 parser.add_option("--name", "-n", help="Module name.") 74 parser.add_option( 75 "--description", "-d", help="Short description of what the module does." 76 ) 77 parser.add_option( 78 "--no-merge", 79 help="Don't merge the module into the salt directory, keep in a temp location", 80 action="store_true", 81 ) 82 parser.add_option( 83 "--debug", 84 help="Display detailed logs whilst applying templates", 85 action="store_true", 86 ) 87 return parser.parse_args() 88 89 90if __name__ == "__main__": 91 if PY26: 92 (args, _) = _parse_args_optparse() 93 else: 94 args = _parse_args_argparse() 95 if args.debug: 96 logging.basicConfig(level=logging.DEBUG) 97 salt_extend( 98 extension=args.extension, 99 name=args.name, 100 description=args.description, 101 salt_dir=args.salt_directory, 102 merge=not args.no_merge, 103 ) 104