You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@brooklyn.apache.org by he...@apache.org on 2023/05/24 11:25:43 UTC
[brooklyn-docs] 02/14: update-children first stab at docs
This is an automated email from the ASF dual-hosted git repository.
heneveld pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/brooklyn-docs.git
commit ed6eb5b0799521f87d698db40a7d5bea9045ac96
Author: Alex Heneveld <al...@cloudsoft.io>
AuthorDate: Fri May 19 15:06:19 2023 +0100
update-children first stab at docs
(still to be implemented)
---
guide/blueprints/workflow/steps/steps.yaml | 54 ++++++++++++++++++++++++++++++
1 file changed, 54 insertions(+)
diff --git a/guide/blueprints/workflow/steps/steps.yaml b/guide/blueprints/workflow/steps/steps.yaml
index 2becd7d6..e6b03c72 100644
--- a/guide/blueprints/workflow/steps/steps.yaml
+++ b/guide/blueprints/workflow/steps/steps.yaml
@@ -458,6 +458,60 @@
* `entity`: the entity or entity ID where the adjunct should be removed, defaulting to the current entity
output: the output from the previous step, or null if this is the first step
+ - name: update-children
+ # TODO would `synchronize-children` be a better name, or something else?
+ summary: Updates children of an entity to be in 1:1 correspondence with items in a given list
+ shorthand: '`update-children [of PARENT] blueprint BLUEPRINT id IDENTIFIER from ITEMS`'
+ input: |
+ * `blueprint`: a blueprint or name of a registered entity type to use to create the children;
+ this is required unless `on_create` is specified; where supplied as a blueprint (not a string)
+ the variable `item` can be referenced to provide initial values, but note this is not updated
+ * `identifier`: an expression in terms of a local variable `item` to use to identify the same child;
+ e.g. if the `items` is of the form `[{ field_id: ticket1, name: "Ticket 1" },...]` then
+ and `identifier: ${item.field_id}` will create/update/delete a child whose ID is `ticket1`;
+ ignored unless `item_check_workflow` is specified
+ * `items`: the list of items to be used to create/update/delete the children
+ * `parent`: the entity or entity ID whose children are to be updated, defaulting to the current entity;
+ any children which do not match something in `items` may be removed
+
+ * `on_create`: an optionally supplied workflow to run at any newly created child, where no pre-existing child was found
+ corresponding to an item in `items` and `update-children` created it from `blueprint`,
+ passed the `item` (and all inputs to the `update-children` step)
+ and typically doing initial setup as required on the child;
+ the default behavior is to invoke an `on_create` effector at the child (if there is such an effector, otherwise do nothing), passing `item`;
+ this is invoked prior to `on_update` so if there is nothing special needed for creation this can be omitted
+
+ * `on_update`: a workflow to run on each child which has a corresponding item,
+ passed the `item` (and all inputs to the `update-children` step),
+ and typically updating config and sensors as appropriate on the child;
+ the default behavior is to invoke an `on_update` effector at the child (if there is such an effector, otherwise do nothing), passing `item`;
+ if the name or any policies may need to change on update, that should be considered in this workflow;
+ if the `update-children` is performed frequently, it might be efficient in this method to check whether the `item` has changed
+
+ * `on_delete`: a workflow to run on each child which no longer has a corresponding item prior to its being deleted;
+ the default behavior is to invoke an `on_delete` effector at the child (if there is such an effector, or nothing)
+
+ * `item_check`:
+ this optionally supplied workflow will be invoked for each item in `items`
+ to customize the discovery of existing children and/or the creation of new children;
+ the workflow is passed input variable `item` (and all inputs to the `update-children` step)
+ and should check whether there is an existing child of `parent` that matches the `item`;
+ if there is a match that should be updated, this workflow should return that child,
+ or `null` or `true` if a child should be created, or `false` if the item should be ignored;
+ following this workflow, the child will be created if necessary (with `on_create` called),
+ and then have `on_update` called (unless the workflow returned `false`);
+ the default implementation of this workflow is to compute and return `${parent.child[${${identifier}}]} ?? true`;
+ this workflow can be used to customize the creation process by creating and returning a new child (or false)
+
+ * `deletion_check`:
+ this optionally supplied workflow will be invoked for each pre-existing child which was not
+ returned by the `item_check_workflow`,
+ with each such entity passed as an input variable `child` (along with all inputs to the `update-children` step);
+ it can then return `true` or `false` to specify whether the child should be deleted
+ (with `on_delete` called prior to deletion if `true` is returned)
+
+ output: the output from the previous step, or null if this is the first step
+
-
section_name: General Purpose
section_intro: |