def run(self, args): self.get_repository(can_fail=True) load_python.PythonBaseFile.get_kube_objs() if args.file == '-': data = sys.stdin.read() sys.stdin.close() else: with open(args.file) as f: data = f.read() value = None if data.lstrip().startswith('{'): try: value = json.loads(data) except ValueError: pass if value is None: try: value = kube_yaml.yaml_load(data) if not isinstance(value, dict): value = None except ValueError: pass if value is None: print("Cannot load {} as either JSON or YAML".format(args.file), file=sys.stderr) return 1 namespace = args.namespace if 'kind' in value and value['kind'] == 'List': values = value['items'] else: values = [value] last_ns = None for v in values: if args.namespace is None: try: namespace = v['metadata']['namespace'] except KeyError: pass indent = args.indent obj = KubeObj.parse_obj(v) if not obj._uses_namespace: namespace = None if namespace is not None and (args.namespace is not None or args.with_namespace): if namespace != last_ns: print((' ' * args.indent) + 'with namespace({}):'.format(repr(namespace))) indent += 4 print((' ' * indent) + obj.dump_obj(indent, args.include_defaults) + '\n') last_ns = namespace
def load_object(obj): return KubeObj.parse_obj(obj)