brooklyn-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ahgittin <...@git.apache.org>
Subject [GitHub] incubator-brooklyn pull request: Introduce relationships between b...
Date Fri, 23 Oct 2015 13:10:38 GMT
GitHub user ahgittin opened a pull request:

    https://github.com/apache/incubator-brooklyn/pull/987

    Introduce relationships between brooklyn objects

    adds BrooklynObject.relations() and relationships such as MANAGER_OF and IN_GROUP.
    includes tests, also convering persistence.
    also adds self-bounding generics to BrooklynObject, and lifts getConfig(key) to Configurable
to avoid generics conflicts (not sure why `public <T> T getConfig(ConfigKey<T>
key)` declared in two interfaces is incompatible but it is apparently).
    
    there is a lot more we'd like to do -- i'll open a thread on the mailing list -- but this
is ready to be merged.
    
    for ease of reference the things i'd like to see following this are below
    
    ---
    
    Make custom relations usable:
    * add CAMP YAML `brooklyn.relations` field to allow callers to specify relations
    * add REST API to query relations
    * update UI to show relations
    
    Replace management and group membership with relations:
    * new "active_child" relationship for a managed child which is important enough to call
out in the UI
    * add subscriptions for relations on an entity
    * replace 'members' field in Group with GROUP_CONTAINS relationship
        leave old field there for deserialization for one release cycle, but empty it and
move everything to be a relation
        use subscription to update count
    * replace `parent/children` fields in Entity with use of relations
       * again leaving fields in place for one release cycle in order to update count
       * add `addChild(Entity, boolean isActive)` such that last item can be set false to
establish a management-only relationship
       * REST API call for "children" to show only ACTIVE children
    
    Finally simplify persistence:
    * make Policy, Enricher Feed, etc all be Entities
    * make Location be Entities and replace the LocationRegistry with use of locations in
catalog
    * use IN_LOCATION, HAS_POLICY, HAS_FEED, etc relations for them, instead of custom persistence
    * allow Catalog to support arbitrary types (i.e. it becomes a Registry of types, rather
than a Catalog)
       * with warning or fail if we try to persist an unknown type
       * with serialization info (to allow migration across versions)
    * persist as YAML


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/ahgittin/incubator-brooklyn relationships

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/incubator-brooklyn/pull/987.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #987
    
----
commit 772e707f81fd34e3db2eafca3067890f384cb9e1
Author: Alex Heneveld <alex.heneveld@cloudsoftcorp.com>
Date:   2015-06-23T06:09:15Z

    Introduce relationships between brooklyn objects
    
    adds BrooklynObject.relations() and relationships such as MANAGER_OF and IN_GROUP.
    includes tests, also convering persistence.
    also adds self-bounding generics to BrooklynObject, and lifts getConfig(key) to Configurable
to avoid generics conflicts (not sure why `public <T> T getConfig(ConfigKey<T>
key)` declared in two interfaces is incompatible but it is apparently).
    
    however there is much still to do:
    * add relations to CAMP, and to the REST API and UI
    * use relations for groups and children, and for locations, policies, etc (ensuring old
persistence is still supported)

----


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message