X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=modules%2Flibjuju%2Fjuju%2Fclient%2Fclient.py;fp=modules%2Flibjuju%2Fjuju%2Fclient%2Fclient.py;h=89b52487664040baabcf5ae6914e13886682660f;hp=0000000000000000000000000000000000000000;hb=68858c1915122c2dbc8999a5cd3229694abf5f3a;hpb=032a71b2a6692b8b4e30f629a1f906d246f06736 diff --git a/modules/libjuju/juju/client/client.py b/modules/libjuju/juju/client/client.py new file mode 100644 index 0000000..89b5248 --- /dev/null +++ b/modules/libjuju/juju/client/client.py @@ -0,0 +1,34 @@ +'''Replace auto-generated classes with our own, where necessary. +''' + +from . import _client, _definitions, overrides + + +for o in overrides.__all__: + if not "Facade" in o: + # Override stuff in _definitions, which is all imported + # into _client. We Monkey patch both the original class and + # the ref in _client (import shenanigans are fun!) + setattr(_definitions, o, getattr(overrides, o)) + setattr(_client, o, getattr(overrides, o)) + # We shouldn't be overriding Facades! + else: + raise ValueError( + "Cannot override a versioned Facade class -- you must patch " + "it instead.") + +for o in overrides.__patches__: + # Patch a versioned Facade. + for client_version in _client.CLIENTS.values(): + try: + c_type = getattr(client_version, o) + except AttributeError: + # Not all the _client modules may have the + # facade. That's okay -- we just skip over them. + continue + o_type = getattr(overrides, o) + for a in dir(o_type): + if not a.startswith('_'): + setattr(c_type, a, getattr(o_type, a)) + +from ._client import * # noqa