X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=juju%2Fclient%2Ffacade.py;h=fef42fb829246c0762cf1810a8c6cd01e32cf87d;hb=1bd3bd858aaf21ecccc64134c536d105c10b0d7e;hp=8e3c7eb5f975fb71e7482122281342b811035f8b;hpb=7d8aa55bcfc13519a9b37b49e4d7a542f0adcd43;p=osm%2FN2VC.git diff --git a/juju/client/facade.py b/juju/client/facade.py index 8e3c7eb..fef42fb 100644 --- a/juju/client/facade.py +++ b/juju/client/facade.py @@ -218,14 +218,22 @@ class {}(Type): if arg_type in basic_types: source.append("{}self.{} = {}".format(INDENT * 2, arg_name, arg_name)) elif issubclass(arg_type, typing.Sequence): - value_type = arg_type_name.__parameters__[0] + value_type = ( + arg_type_name.__parameters__[0] + if len(arg_type_name.__parameters__) + else None + ) if type(value_type) is typing.TypeVar: source.append("{}self.{} = [{}.from_json(o) for o in {} or []]".format( INDENT * 2, arg_name, strcast(value_type), arg_name)) else: source.append("{}self.{} = {}".format(INDENT * 2, arg_name, arg_name)) elif issubclass(arg_type, typing.Mapping): - value_type = arg_type_name.__parameters__[1] + value_type = ( + arg_type_name.__parameters__[1] + if len(arg_type_name.__parameters__) > 1 + else None + ) if type(value_type) is typing.TypeVar: source.append("{}self.{} = {{k: {}.from_json(v) for k, v in ({} or dict()).items()}}".format( INDENT * 2, arg_name, strcast(value_type), arg_name)) @@ -308,7 +316,7 @@ def ReturnMapping(cls): reply = await f(*args, **kwargs) if cls is None: return reply - if 'Error' in reply: + if 'error' in reply: cls = classes['Error'] if issubclass(cls, typing.Sequence): result = [] @@ -316,7 +324,7 @@ def ReturnMapping(cls): for item in reply: result.append(item_cls.from_json(item)) else: - result = cls.from_json(reply['Response']) + result = cls.from_json(reply['response']) return result return wrapper @@ -344,7 +352,7 @@ def makeFunc(cls, name, params, result, async=True): ''' # map input types to rpc msg params = dict() - msg = dict(Type='{cls.name}', Request='{name}', Version={cls.version}, Params=params) + msg = dict(type='{cls.name}', request='{name}', version={cls.version}, params=params) {assignments} reply = {await}self.rpc(msg) return reply @@ -395,7 +403,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 +436,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 = {}