def test_load_rules_from_file_no_mapping(tmpdir): p = tmpdir.join("missing-keys.yaml") p.write('''rules: - foo - bar ''') with pytest.raises(TypeError): load_rules_from_file(str(p))
def test_load_rules_from_file(tmpdir): p = tmpdir.join("rules.yaml") p.write('''rules: - id: rule-1 resources: [foos, bars] jmespath: a.b.c ttl: 5m ''') load_rules_from_file(str(p))
def test_load_rules_from_file_missing_keys(tmpdir): p = tmpdir.join("missing-keys.yaml") p.write('''rules: - resources: [foos, bars] jmespath: a.b.c ttl: 5m ''') with pytest.raises(TypeError): load_rules_from_file(str(p))
def main(args=None): parser = cmd.get_parser() args = parser.parse_args(args) logging.basicConfig( format="%(asctime)s %(levelname)s: %(message)s", level=logging.DEBUG if args.debug else logging.INFO, ) config_str = ", ".join(f"{k}={v}" for k, v in sorted(vars(args).items())) logger.info(f"Janitor v{__version__} started with {config_str}") if args.dry_run: logger.info("**DRY-RUN**: no deletions will be performed!") if args.rules_file: rules = load_rules_from_file(args.rules_file) logger.info(f"Loaded {len(rules)} rules from file {args.rules_file}") else: rules = [] return run_loop( args.once, args.include_resources, args.exclude_resources, args.include_namespaces, args.exclude_namespaces, rules, args.interval, args.delete_notification, args.deployment_time_annotation, args.resource_context_hook, args.dry_run, )
def main(args=None): parser = cmd.get_parser() args = parser.parse_args(args) logging.basicConfig(format='%(asctime)s %(levelname)s: %(message)s', level=logging.DEBUG if args.debug else logging.INFO) config_str = ', '.join(f'{k}={v}' for k, v in sorted(vars(args).items())) logger.info(f'Janitor v{__version__} started with {config_str}') if args.dry_run: logger.info('**DRY-RUN**: no deletions will be performed!') if args.rules_file: rules = load_rules_from_file(args.rules_file) logger.info(f'Loaded {len(rules)} rules from file {args.rules_file}') else: rules = [] if args.tiller_host and args.tiller_port: tiller = Tiller(args.tiller_host, args.tiller_port) else: tiller = None return run_loop(args.once, args.include_resources, args.exclude_resources, args.include_namespaces, args.exclude_namespaces, rules, args.interval, args.delete_notification, args.dry_run, tiller)
def main(args=None): parser = cmd.get_parser() args = parser.parse_args(args) std = logging.StreamHandler(sys.stdout) logHandlers = [std] if args.slack_webhook_url: from slack_logger import SlackHandler, SlackFormatter sh = SlackHandler(username='******', icon_emoji=':robot_face:', url=args.slack_webhook_url) sh.addFilter(lambda x: x.levelno != logging.DEBUG) sh.setFormatter(SlackFormatter()) logHandlers.append(sh) logging.basicConfig( handlers=logHandlers, format="%(asctime)s %(levelname)s: %(message)s", level=logging.DEBUG if args.debug else logging.INFO, ) config_str = ", ".join(f"{k}={v}" for k, v in sorted(vars(args).items())) logger.info(f"Janitor v{__version__} started with {config_str}") if args.dry_run: logger.info("**DRY-RUN**: no deletions will be performed!") if args.rules_file: rules = load_rules_from_file(args.rules_file) logger.info(f"Loaded {len(rules)} rules from file {args.rules_file}") else: rules = [] return run_loop( args.once, args.include_resources, args.exclude_resources, args.include_namespaces, args.exclude_namespaces, rules, args.interval, args.delete_notification, args.deployment_time_annotation, args.resource_context_hook, args.wait_after_delete, args.dry_run, )
def main(args=None): parser = cmd.get_parser() args = parser.parse_args(args) logging.basicConfig(format='%(asctime)s %(levelname)s: %(message)s', level=logging.DEBUG if args.debug else logging.INFO) logger.info(f'Janitor v{__version__} started with config {args}') if args.dry_run: logger.info('**DRY-RUN**: no deletions will be performed!') if args.rules_file: rules = load_rules_from_file(args.rules_file) logger.info(f'Loaded {len(rules)} rules from file {args.rules_file}') else: rules = [] return run_loop(args.once, args.include_resources, args.exclude_resources, args.include_namespaces, args.exclude_namespaces, rules, args.interval, args.dry_run)
def test_load_rules_from_wrong_file(tmpdir): p = tmpdir.join("wrong.yaml") p.write("wrongformat") with pytest.raises(KeyError): load_rules_from_file(str(p))
def test_load_rules_from_empty_file(tmpdir): p = tmpdir.join("empty.yaml") p.write("rules: []") load_rules_from_file(str(p))