Hi Valentin,

Regarding rebind - not quite sure what you mean. After rebind, the entities should have the same tags as they had before Brooklyn was shutdown. That will include all the tags that came from `broolyn.tags` section of the yaml blueprint, because those have already been set on the entity instance. Is that not the case? We can discuss technical details in the PR if that's easier.

Aled


On 31/03/2017 13:20, Valentin Aitken wrote:
Hi,
OK thanks for that I will allow arbitrary objects then.
Do you think it is reasonable to also add tags from brooklyn.tags yaml on rebind?

Valentin.


На 31/03/17 в 14:50, Aled Sage написа:
+1; let's support arbitrary objects.

As for DSL, it does work if your very careful which DSL expressions to use (e.g. see [1]).

Things like `$brooklyn:external` etc may well be useful, but that's tricky: we've said elsewhere that we will not store the resolved value of such a DSL expression. However, our `entity.tags().getTags()` won't resolve the DSLs so the caller will get back the DSL objects (i.e. different behavior to config etc). I therefore suggest we deffer supporting that.

I agree we should forbid Futures/Tasks/DeferredSuppliers - DSL will only be usable if its parsing resolves the value immediately (which it does do for `$brooklyn:object` if there are no nested DSL values).

Aled

[1] https://github.com/apache/brooklyn-server/pull/612#issuecomment-290046363


On 31/03/2017 12:11, Svetoslav Neykov wrote:
I think we should support arbitrary objects for tags. Users should use only tags they understand, so it's fine to have free-form tags in there. The problem with tag objects in YAML is that we can't use DSL - because the tags need to be resolved pretty early, while constructing the EntitySpec when there are no running entities. So Futures/Tasks/DeferredSuppliers should not be allowed for tag values.
On the other hand YAML lists, maps could be useful.

Svet.


On 31.03.2017 г., at 11:49, Valentin Aitken <[email protected]> wrote:

Hi,

I'd like to bring attention to a new feature I suggested in BROOKLYN-460 [1] and [2]. Current requirement is to be able to supply String tags in an entity spec in YAML so it can be then retrieved via REST API with GET /v1/applications/<appId>/entities/<entityId>/tags.

Example usage in a YAML blueprint:
services:
- type: org.apache.brooklyn.entity.software.base.VanillaSoftwareProcess
  brooklyn.tags:
  - tag1
  - "2"
  - hello world

Please shout if you have further requirements for brooklyn.tags.

Main concern raised in [2] comments is whether that syntax should support any Object as a tag.

My concern is that although Object is allowed
in Apache Brooklyn only classes defined in org.apache.brooklyn.core.mgmt.BrooklynTags are used as a tag.
Every entity has this tag at the moment:
[{"kind":"yaml_spec","contents":"services:\n- type......"}]

That is good since REST query for tags in every entity will have "kind" field which someone can rely on. Good use case is to very easy filter out kind -> yaml_spec and making sure user can retrieve only tags assigned in YAML.
That's why I decided to follow the same pattern and in YAML and accept
string values only which are then passed to org.apache.brooklyn.core.mgmt.BrooklynTags.newNotesTag in order to keep existing pattern with "kind" and "contents" fields for every tag.


[1] https://issues.apache.org/jira/browse/BROOKLYN-460
[2] https://github.com/apache/brooklyn-server/pull/612

--
Valentin Aitken
Software Engineer
Cloudsoft Corporation Ltd.
www.cloudsoft.io



Reply via email to