Пример #1
0
    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
Пример #2
0
 def load_object(obj):
     return KubeObj.parse_obj(obj)