예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
 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)
예제 #4
0
 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)
예제 #5
0
 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)