X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=juju%2Fclient%2Ffacade.py;h=41166c0b073834af7edd197e66821001487ad8be;hb=561a68b42d847d63606cd73a9bdf129590538a1b;hp=5b7ac35fa6b7cf6d3d8eee9d06a9f9206a905855;hpb=7291882b61e1482db38a9f37cc6a447439227d59;p=osm%2FN2VC.git diff --git a/juju/client/facade.py b/juju/client/facade.py index 5b7ac35..41166c0 100644 --- a/juju/client/facade.py +++ b/juju/client/facade.py @@ -395,7 +395,7 @@ def buildFacade(schema): version=schema.version, schema=schema)) source = """ -class {name}(Type): +class {name}Facade(Type): name = '{name}' version = {version} schema = {schema} @@ -428,7 +428,11 @@ class Type: for k, v in (data or {}).items(): d[cls._toPy.get(k, k)] = v - return cls(**d) + try: + return cls(**d) + except TypeError: + print(cls) + raise def serialize(self): d = {} @@ -526,7 +530,10 @@ class Schema(dict): add((name, self.buildArray(pprop, d + 1))) else: add((name, Mapping[str, SCHEMA_TO_PYTHON[ppkind]])) - #print("{}{}".format(d * " ", struct)) + + if not struct and node.get('additionalProperties', False): + add((name, Mapping[str, SCHEMA_TO_PYTHON['object']])) + return struct def buildArray(self, obj, d=0): @@ -558,9 +565,13 @@ def generate_facacdes(options): global classes schemas = json.loads(Path(options.schema).read_text("utf-8")) capture = codegen.CodeWriter() - capture.write(""" -from juju.client.facade import Type, ReturnMapping - """) + capture.write(textwrap.dedent("""\ + # DO NOT CHANGE THIS FILE! This file is auto-generated by facade.py. + # Changes will be overwritten/lost when the file is regenerated. + + from juju.client.facade import Type, ReturnMapping + + """)) schemas = [Schema(s) for s in schemas] for schema in schemas: