Source code for pykube.console

import argparse
import code

import pykube

# import readline to support line editing within console session.
try:
    import readline  # noqa: F401
except ImportError:
    pass


[docs]def main(argv=None): """ Run the interactive Pykube console (usually invoked via python3 -m pykube) """ parser = argparse.ArgumentParser() parser.add_argument( "--kubeconfig", help="Path to the kubeconfig file to use", metavar="PATH" ) parser.add_argument( "--context", help="The name of the kubeconfig context to used", metavar="NAME" ) parser.add_argument( "-c", help="Python program passed in as string", metavar="SCRIPT" ) args = parser.parse_args(argv) config = pykube.KubeConfig.from_file(args.kubeconfig) if args.context: config.set_current_context(args.context) api = pykube.HTTPClient(config) context = { "__name__": "__console__", "pykube": pykube, "config": config, "api": api, } for k, v in vars(pykube).items(): if k[0] != "_" and k[0] == k[0].upper(): context[k] = v banner = f"""Pykube v{pykube.__version__}, loaded "{config.filepath}" with context "{config.current_context}". Example commands: [d.name for d in Deployment.objects(api)] # get names of deployments in default namespace list(DaemonSet.objects(api, namespace='kube-system')) # list daemonsets in "kube-system" Pod.objects(api).get_by_name('mypod').labels # labels of pod "mypod" Use Ctrl-D to exit""" console = code.InteractiveConsole(locals=context) if args.c: console.runsource(args.c) else: console.interact(banner)