def __init__(self, target_endpoint: str, client: "CloudFoundryClient", *args, **kwargs): super(Entity, self).__init__(*args, **kwargs) self.target_endpoint = target_endpoint self.client = client try: if not (isinstance(self.get("entity"), dict)): raise InvalidEntity(**self) for attribute, value in list(self["entity"].items()): domain_name, suffix = attribute.rpartition("_")[::2] if suffix == "url": manager_name = domain_name if domain_name.endswith( "s") else "%ss" % domain_name try: other_manager = getattr(client.v2, manager_name) except AttributeError: # generic manager other_manager = EntityManager(target_endpoint, client, "") if domain_name.endswith("s"): new_method = partial(other_manager._list, value) else: new_method = partial(other_manager._get, value) new_method.__name__ = domain_name setattr(self, domain_name, new_method) except KeyError: raise InvalidEntity(**self)
def __init__(self, target_endpoint: str, client: 'CloudFoundryClient', **kwargs): super(Entity, self).__init__(**kwargs) try: def default_method(m, u): raise NotImplementedError('Unknown method %s for url %s' % (m, u)) for link_name, link in self.get('links', {}).items(): if link_name != 'self': link_method = link.get('method', 'GET').lower() ref = link['href'] manager_name = link_name if link_name.endswith('s') else '%ss' % link_name try: other_manager = getattr(client.v3, manager_name) except AttributeError: # generic manager other_manager = EntityManager( target_endpoint, client, '') if link_method == 'get': new_method = functools.partial(other_manager._paginate, ref) if link_name.endswith('s') \ else functools.partial(other_manager._get, ref) elif link_method == 'post': new_method = functools.partial(other_manager._post, ref) elif link_method == 'put': new_method = functools.partial(other_manager._put, ref) elif link_method == 'delete': new_method = functools.partial(other_manager._delete, ref) else: new_method = functools.partial(default_method, link_method, ref) new_method.__name__ = link_name setattr(self, link_name, new_method) except KeyError: raise InvalidEntity(**self)
def __init__(self, target_endpoint: str, client: "CloudFoundryClient", **kwargs): super(Entity, self).__init__(**kwargs) try: def default_method(m, u): raise NotImplementedError("Unknown method %s for url %s" % (m, u)) default_manager = self._default_manager(client, target_endpoint) for link_name, link in self.get("links", {}).items(): if link_name != "self": link_method = link.get("method", "GET").lower() ref = link["href"] manager_name = link_name if link_name.endswith("s") else "%ss" % link_name other_manager = getattr(client.v3, manager_name, default_manager) if link_method == "get": new_method = ( functools.partial(other_manager._paginate, ref) if link_name.endswith("s") else functools.partial(other_manager._get, ref) ) elif link_method == "post": new_method = functools.partial(other_manager._post, ref) elif link_method == "put": new_method = functools.partial(other_manager._put, ref) elif link_method == "delete": new_method = functools.partial(other_manager._delete, ref) else: new_method = functools.partial(default_method, link_method, ref) new_method.__name__ = link_name setattr(self, link_name, new_method) except KeyError: raise InvalidEntity(**self)
def __init__(self, target_endpoint: str, client: "CloudFoundryClient", *args, **kwargs): super(Entity, self).__init__(*args, **kwargs) self.target_endpoint = target_endpoint self.client = client try: src = self["source"] dst = self["destination"] src["id"] dst["id"] dst["protocol"] dst["ports"]["start"] dst["ports"]["end"] except KeyError: raise InvalidEntity(**self)
def __init__(self, target_endpoint: str, client: 'CloudFoundryClient', *args, **kwargs): super(Entity, self).__init__(*args, **kwargs) self.target_endpoint = target_endpoint self.client = client try: src = self['source'] dst = self['destination'] src['id'] dst['id'] dst['protocol'] dst['ports']['start'] dst['ports']['end'] except KeyError: raise InvalidEntity(**self)
def _create_navigable_links(self, v3_client: "V3", default_manager: "EntityManager") -> None: try: default_method = self._default_method() for link_name, link in self.get("links", {}).items(): if link_name != "self": link_method = link.get("method", "GET").lower() manager_method = self._manager_method( link_name, link_method) ref = link["href"] if manager_method is not None: manager_name = plural(link_name) other_manager = getattr(v3_client, manager_name, default_manager) new_method = functools.partial( getattr(other_manager, manager_method), ref) else: new_method = functools.partial(default_method, link_method, ref) new_method.__name__ = link_name setattr(self, link_name, new_method) except KeyError: raise InvalidEntity(**self)