Add documentation for Kserve participant 75/134275/3
authoraravind.est <aravindhan.a@est.tech>
Fri, 21 Apr 2023 12:34:28 +0000 (13:34 +0100)
committeraravind.est <aravindhan.a@est.tech>
Fri, 21 Apr 2023 13:39:03 +0000 (14:39 +0100)
Documentation added for Kserve participant with tosca.

Issue-ID: POLICY-4609
Signed-off-by: aravind.est <aravindhan.a@est.tech>
Change-Id: I43215708da72d0261e1352a683cd882ca59343c2

docs/clamp/acm/design-impl/participants/kserve-participant.rst [new file with mode: 0644]
docs/clamp/acm/design-impl/participants/participants.rst
docs/clamp/acm/design-impl/participants/tosca/automation-composition-kserve.yml [new file with mode: 0644]
docs/clamp/acm/design-impl/participants/tosca/tosca-kserve-participant.yml [new file with mode: 0644]
docs/clamp/acm/draw.io/acm-participant-a1pms-kserve.drawio [new file with mode: 0755]
docs/clamp/acm/images/participants/kserve-participant.png [new file with mode: 0755]

diff --git a/docs/clamp/acm/design-impl/participants/kserve-participant.rst b/docs/clamp/acm/design-impl/participants/kserve-participant.rst
new file mode 100644 (file)
index 0000000..618b7eb
--- /dev/null
@@ -0,0 +1,95 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+
+.. _clamp-acm-kserve-participant:
+
+Kserve Participant
+##################
+
+The Kserve participant receives inference service information from CLAMP runtime and creates the inference services in the Kubernetes cluster. The participant acts as a wrapper around Kserve and creates the inference service.
+
+Supported message Broker are DMaap and Strimzi-Kafka.
+
+.. image:: ../../images/participants/kserve-participant.png
+
+When an automation composition is initialized, the Kserve participant starts a Kserve Automation Composition
+element for the automation composition. It reads the configuration information sent from the
+Automation Composition Runtime and runs a REST client to talk to the K8s API to create the inference services.
+
+Prerequisites for using Kserve participant:
+-------------------------------------------
+
+- Kserve installation in the same k8s cluster where Kserve participant is running.
+
+
+Supported Element Types
+-----------------------
+Supported Element Types for Kserve participant will be used to define the Kserve participant Element Definition Types in tosca template.
+Participant Supported Element Types is defined in Kserve participant application.yaml.
+
+.. code-block:: YAML
+
+    participantSupportedElementTypes:
+      -
+        typeName: org.onap.policy.clamp.acm.KserveAutomationCompositionElement
+        typeVersion: 1.0.1
+
+Defining a TOSCA CL definition for Kserve participant:
+------------------------------------------------------
+
+A *Kserve Inference Service Entity* describes a inference service that is managed by the Kserve participant. A
+Inference Service Entity can be created, Read, and Deleted. The user defines
+the Inference Service Entities that it wants its Kserve Automation Composition Element to manage.
+
+Sample tosca template defining a participant and a AC element definition. :download:`click here <tosca/tosca-kserve-participant.yml>`
+
+
+Configuring a Automation Composition Element on the Kserve participant for a Automation Composition
+---------------------------------------------------------------------------------------------------
+
+The user defines the following properties in the TOSCA template for the Kserve participant:
+
+.. list-table::
+   :widths: 15 10 50
+   :header-rows: 1
+
+   * - Property
+     - Type
+     - Description
+   * - kserveInferenceEntityId
+     - ToscaConceptIdentifier
+     - The name and version of the inference service that needs to be managed by the Kserve participant
+   * - name
+     - String
+     - The name of the inference service
+   * - namespace
+     - String
+     - The namespace in the k8s cluster where the inference service needs to be installed
+   * - payload
+     - String
+     - The payload of the inference service kubernetes entity. This will be used as payload to call the Kubernetes API.
+
+Sample Automation Composition instances.
+In that example the user fills the properties defined in the TOSCA for the Kserve participant :download:`click here <tosca/automation-composition-kserve.yml>`
+
+Kserve participant Interactions:
+--------------------------------
+The Kserve participant interacts with Automation Composition Runtime on the northbound interface via Message Broker. It interacts with the Kubernetes API on the southbound interface for performing Kserve relation operations.
+
+The communication for the Automation Composition updates and state change requests are sent from the Automation Composition Runtime to the participant via Message Broker.
+The participant performs appropriate operations on Kserve via Kubernetes REST based on the received messages from the Automation Composition Runtime.
+
+
+Kserve participant Workflow:
+----------------------------
+Once the participant is started, it sends a "REGISTER" event to the Message Broker topic which is then consumed by the Automation Composition Runtime to register this participant on the runtime database.
+The user can commission the tosca definitions from the Policy Gui to the Automation Composition Runtime.
+Once the automation composition definitions are available in the runtime database, the user can prime them and further updates the participant with these definitions via Message Broker.
+After priming, the Automation Composition can be instantiated with the default state "UNDEPLOYED" from the Policy Gui.
+
+When the state of the Automation Composition is changed from "UNDEPLOYED" to "DEPLOYED" from the Policy Gui, the kserve participant receives the automation composition state change event from the runtime and
+deploys the inference service associated with each Automation Composition Elements by calling the kubernetes api in the cluster.
+
+The participant also monitors the deployed inference services for the configured time until the inference services comes to RUNNING state.
+It holds the deployment information of the inference service including the current status of the inference services after the deployment.
+
+When the state of the Automation Composition is changed back from "DEPLOYED" to "UNDEPLOYED", the participant also undeploys the related inference service from the cluster.
index 2a94835..4dab343 100644 (file)
@@ -36,4 +36,5 @@ The detailed implementation of the CLAMP Participant ecosystem is described on t
    http-participant
    k8s-participant
    a1pms-participant
+   kserve-participant
    policy-framework-participant
diff --git a/docs/clamp/acm/design-impl/participants/tosca/automation-composition-kserve.yml b/docs/clamp/acm/design-impl/participants/tosca/automation-composition-kserve.yml
new file mode 100644 (file)
index 0000000..7194df8
--- /dev/null
@@ -0,0 +1,19 @@
+name: DemoInstance0
+version: 1.0.1
+compositionId: {{compositionId}}
+description: Demo automation composition instance 0
+elements:
+  709c62b3-8918-41b9-a747-d21eb79c6c26:
+    id: 709c62b3-8918-41b9-a747-d21eb79c6c26
+    definition:
+      name: onap.policy.clamp.ac.element.KserveAutomationCompositionElement
+      version: 1.2.3
+    description: Starter Automation Composition Element for the Demo
+    properties:
+      kserveInferenceEntities:
+        - kserveInferenceEntityId:
+            name: entity1
+            version: 1.0.1
+          name: demo-inference-service
+          namespace: demo-namespace
+          payload: '{"apiVersion": "serving.kserve.io/v1beta1","kind": "InferenceService","metadata": {"name": "sklearn-iris"},"spec": {"predictor": {"model":{"modelFormat": {"name": "sklearn"},"storageUri": "gs://kfserving-examples/models/sklearn/1.0/model"}}}}'
diff --git a/docs/clamp/acm/design-impl/participants/tosca/tosca-kserve-participant.yml b/docs/clamp/acm/design-impl/participants/tosca/tosca-kserve-participant.yml
new file mode 100644 (file)
index 0000000..815b766
--- /dev/null
@@ -0,0 +1,114 @@
+tosca_definitions_version: tosca_simple_yaml_1_3
+data_types:
+  onap.datatypes.ToscaConceptIdentifier:
+    derived_from: tosca.datatypes.Root
+    properties:
+      name:
+        type: string
+        required: true
+      version:
+        type: string
+        required: true
+  org.onap.datatypes.policy.clamp.acm.kserveAutomationCompositionElement.KserveInferenceEntity:
+    version: 1.0.0
+    derived_from: tosca.datatypes.Root
+    properties:
+      kserveEntityId:
+        type: onap.datatypes.ToscaConceptIdentifier
+        type_version: 1.0.0
+        required: true
+        description: The name and version of a Configuration Entity to be handled by the Kserve Automation Composition Element
+      name:
+        type: string
+        required: true
+        description: Inference service name to be created
+      payload:
+        type: string
+        required: true
+        description: Inference Service payload
+
+node_types:
+  org.onap.policy.clamp.acm.Participant:
+    version: 1.0.1
+    derived_from: tosca.nodetypes.Root
+    properties:
+      provider:
+        type: string
+        required: false
+  org.onap.policy.clamp.acm.AutomationCompositionElement:
+    version: 1.0.1
+    derived_from: tosca.nodetypes.Root
+    properties:
+      provider:
+        type: string
+        required: false
+      participantType:
+        type: onap.datatypes.ToscaConceptIdentifier
+        required: true
+      startPhase:
+        type: integer
+        required: false
+        constraints:
+        - greater-or-equal: 0
+        metadata:
+            common: true
+        description: A value indicating the start phase in which this automation composition element will be started, the
+                     first start phase is zero. Automation Composition Elements are started in their start_phase order and stopped
+                     in reverse start phase order. Automation Composition Elements with the same start phase are started and
+                     stopped simultaneously
+  org.onap.policy.clamp.acm.AutomationComposition:
+    version: 1.0.1
+    derived_from: tosca.nodetypes.Root
+    properties:
+      provider:
+        type: string
+        required: false
+      elements:
+        type: list
+        required: true
+        entry_schema:
+          type: onap.datatypes.ToscaConceptIdentifier
+  org.onap.policy.clamp.acm.KserveAutomationCompositionElement:
+    version: 1.0.1
+    derived_from: org.onap.policy.clamp.acm.AutomationCompositionElement
+    properties:
+      kserveInferenceEntities:
+        type: list
+        required: true
+        entry_schema:
+          type: org.onap.datatypes.policy.clamp.acm.kserveAutomationCompositionElement.KserveInferenceEntityId
+          type_version: 1.0.0
+        description: The configuration entities of Kserve inference service
+topology_template:
+  node_templates:
+    org.onap.policy.clamp.acm.KserveParticipant:
+      version: 2.3.4
+      type: org.onap.policy.clamp.acm.Participant
+      type_version: 1.0.1
+      description: Participant for Kserve requests
+      properties:
+        provider: ONAP
+
+    onap.policy.clamp.ac.element.KserveAutomationCompositionElement:
+      version: 1.2.3
+      type: org.onap.policy.clamp.acm.KserveAutomationCompositionElement
+      type_version: 1.0.1
+      description: Automation composition element for the Kserve Requests
+      properties:
+        provider: ONAP
+        participantType:
+          name: org.onap.policy.clamp.acm.KserveParticipant
+          version: 2.3.4
+        uninitializedToPassiveTimeout: 60
+        statusCheckInterval: 30
+
+    onap.policy.clamp.ac.element.AutomationCompositionDefinition:
+      version: 1.2.3
+      type: org.onap.policy.clamp.acm.AutomationComposition
+      type_version: 1.0.0
+      description: Automation composition for Kserve request
+      properties:
+        provider: ONAP
+        elements:
+          - name: onap.policy.clamp.ac.element.KserveAutomationCompositionElement
+            version: 1.2.3
diff --git a/docs/clamp/acm/draw.io/acm-participant-a1pms-kserve.drawio b/docs/clamp/acm/draw.io/acm-participant-a1pms-kserve.drawio
new file mode 100755 (executable)
index 0000000..848cf77
--- /dev/null
@@ -0,0 +1,305 @@
+<mxfile host="Electron" modified="2023-04-21T08:55:06.953Z" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/21.2.1 Chrome/112.0.5615.87 Electron/24.1.2 Safari/537.36" etag="OcRdNbxY9G9qqtWJc1uy" version="21.2.1" type="device" pages="2">
+  <diagram name="A1PMS" id="EQz7CeIsnqjb-CRsskzZ">
+    <mxGraphModel dx="3766" dy="2280" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-1" value="CLAMP-ACM&lt;br&gt;GUI" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#b1ddf0;strokeColor=#10739e;" parent="1" vertex="1">
+          <mxGeometry x="47" y="-103" width="153" height="81" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-2" value="Automation Composition Runtime (CLAMP-ACM)" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="44" y="28" width="156" height="81" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-3" value="DMaaP" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+          <mxGeometry x="-232" y="201" width="760" height="39" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-4" value="A1PMS participant&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="1" vertex="1">
+          <mxGeometry x="12" y="333" width="243" height="183" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-5" value="A1PMS Participant Automation Composition Element Configuration for Automation Composition A&lt;br&gt;&lt;br&gt;- Define A1 policy service entities&lt;br&gt;&amp;nbsp; + Sequence of A1 Policy Services&lt;br&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;- Client Id&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;- Callback URL&lt;/span&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fontSize=16;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+          <mxGeometry x="-553" y="-227" width="251" height="216" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-9" value="A1PMS Participant Automation Composition Element Configuration for Automation Composition B&lt;br&gt;&lt;br&gt;- Define A1 policy service entities&lt;br&gt;&amp;nbsp; + Sequence of A1 Policy Services&lt;br&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;- Client Id&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;- Callback URL&lt;/span&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
+          <mxGeometry x="-556" y="24" width="251" height="216" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-10" value="" style="endArrow=none;dashed=1;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.996;exitY=0.278;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="BEZJXQmxWPO11OeoHs-X-5" target="BEZJXQmxWPO11OeoHs-X-1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="2" y="-30" as="sourcePoint" />
+            <mxPoint x="52" y="-80" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-11" value="" style="endArrow=none;dashed=1;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=1.022;exitY=0.288;exitDx=0;exitDy=0;exitPerimeter=0;entryX=-0.015;entryY=0.632;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="BEZJXQmxWPO11OeoHs-X-9" target="BEZJXQmxWPO11OeoHs-X-1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-293" y="-157" as="sourcePoint" />
+            <mxPoint x="54" y="-73" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-12" value="" style="endArrow=none;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="BEZJXQmxWPO11OeoHs-X-2" target="BEZJXQmxWPO11OeoHs-X-1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="67" y="28" as="sourcePoint" />
+            <mxPoint x="117" y="-22" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-13" value="A1PMS&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#eeeeee;strokeColor=#36393d;" parent="1" vertex="1">
+          <mxGeometry x="368" y="333" width="203.5" height="183" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-7" value="A1 policy for Automation Composition A" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+          <mxGeometry x="413" y="376" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-8" value="A1 policy for Automation Composition B" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
+          <mxGeometry x="413" y="447" width="120" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-14" value="A1PMS Automation Composition Element for Automation Composition A" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+          <mxGeometry x="27" y="378" width="213" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-15" value="A1PMS Automation Composition Element for Automation Composition B" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
+          <mxGeometry x="32" y="450" width="202" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-37" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;sketch=0;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.262;exitY=1.001;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="BEZJXQmxWPO11OeoHs-X-39" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="154" y="109" as="sourcePoint" />
+            <mxPoint x="156" y="151" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-38" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=halfCircle;endFill=0;entryX=0.5;entryY=0.5;endSize=6;strokeWidth=1;sketch=0;fontSize=12;curved=1;exitX=0.416;exitY=0.012;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="BEZJXQmxWPO11OeoHs-X-39" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="154" y="201" as="sourcePoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-39" value="" style="ellipse;whiteSpace=wrap;html=1;align=center;aspect=fixed;resizable=0;points=[];outlineConnect=0;sketch=0;fontSize=16;direction=south;fillColor=#B20000;fontColor=#ffffff;strokeColor=#B20000;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="149" y="150" width="10" height="10" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-40" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;sketch=0;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.262;exitY=1.001;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="BEZJXQmxWPO11OeoHs-X-42" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="85" y="240" as="sourcePoint" />
+            <mxPoint x="87" y="282" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="85" y="273" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-41" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=halfCircle;endFill=0;entryX=0.5;entryY=0.5;endSize=6;strokeWidth=1;sketch=0;fontSize=12;curved=1;exitX=0.416;exitY=0.012;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="BEZJXQmxWPO11OeoHs-X-42" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="85" y="332" as="sourcePoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-42" value="" style="ellipse;whiteSpace=wrap;html=1;align=center;aspect=fixed;resizable=0;points=[];outlineConnect=0;sketch=0;fontSize=16;direction=south;fillColor=#B20000;fontColor=#ffffff;strokeColor=#B20000;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="80" y="281" width="10" height="10" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-43" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;sketch=0;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.262;exitY=1.001;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="BEZJXQmxWPO11OeoHs-X-45" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="157" y="240" as="sourcePoint" />
+            <mxPoint x="159" y="282" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-44" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=halfCircle;endFill=0;entryX=0.5;entryY=0.5;endSize=6;strokeWidth=1;sketch=0;fontSize=12;curved=1;exitX=0.416;exitY=0.012;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="BEZJXQmxWPO11OeoHs-X-45" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="157" y="332" as="sourcePoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-45" value="" style="ellipse;whiteSpace=wrap;html=1;align=center;aspect=fixed;resizable=0;points=[];outlineConnect=0;sketch=0;fontSize=16;direction=south;fillColor=#B20000;fontColor=#ffffff;strokeColor=#B20000;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="152" y="281" width="10" height="10" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-46" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;sketch=0;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.262;exitY=1.001;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="BEZJXQmxWPO11OeoHs-X-48" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="85" y="110" as="sourcePoint" />
+            <mxPoint x="87" y="152" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-47" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=halfCircle;endFill=0;entryX=0.5;entryY=0.5;endSize=6;strokeWidth=1;sketch=0;fontSize=12;curved=1;exitX=0.416;exitY=0.012;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="BEZJXQmxWPO11OeoHs-X-48" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="85" y="202" as="sourcePoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-48" value="" style="ellipse;whiteSpace=wrap;html=1;align=center;aspect=fixed;resizable=0;points=[];outlineConnect=0;sketch=0;fontSize=16;direction=south;fillColor=#B20000;fontColor=#ffffff;strokeColor=#B20000;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="80" y="151" width="10" height="10" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-50" value="" style="endArrow=classic;startArrow=classic;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;curved=1;" parent="1" target="BEZJXQmxWPO11OeoHs-X-13" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="256" y="426" as="sourcePoint" />
+            <mxPoint x="305" y="376" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-51" value="REST" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="1" vertex="1">
+          <mxGeometry x="278" y="395" width="61" height="31" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-52" value="Instantiation" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="1" vertex="1">
+          <mxGeometry x="-26" y="143" width="104" height="31" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-53" value="Instantiation" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="1" vertex="1">
+          <mxGeometry x="-26" y="274" width="104" height="31" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-54" value="Monitoring" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="1" vertex="1">
+          <mxGeometry x="159" y="139.5" width="93" height="31" as="geometry" />
+        </mxCell>
+        <mxCell id="BEZJXQmxWPO11OeoHs-X-55" value="Monitoring" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="1" vertex="1">
+          <mxGeometry x="162" y="270.5" width="93" height="31" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+  <diagram id="7EV7rOq7FkkVQS_sMw84" name="Kserve">
+    <mxGraphModel dx="2397" dy="1412" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="0" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
+      <root>
+        <mxCell id="0" />
+        <mxCell id="1" parent="0" />
+        <mxCell id="yh-L3AtmC00XoUG_2nvY-11" value="" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;dashed=1;dashPattern=12 12;" vertex="1" parent="1">
+          <mxGeometry x="-261" y="-213" width="1024" height="778" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-1" value="CLAMP-ACM&lt;br&gt;GUI" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#b1ddf0;strokeColor=#10739e;" parent="1" vertex="1">
+          <mxGeometry x="47" y="-103" width="153" height="81" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-2" value="Automation Composition Runtime (CLAMP-ACM)" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#dae8fc;strokeColor=#6c8ebf;" parent="1" vertex="1">
+          <mxGeometry x="44" y="28" width="156" height="81" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-3" value="DMaaP" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#d5e8d4;strokeColor=#82b366;" parent="1" vertex="1">
+          <mxGeometry x="-232" y="201" width="760" height="39" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-5" value="Kserve Participant Automation Composition Element Configuration for Automation Composition A&lt;br&gt;&lt;br&gt;- Define Inference Service Entities&lt;br&gt;&amp;nbsp; + Sequence of Inference Services&lt;br&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;- Name&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;- Namespace&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;background-color: initial;&quot;&gt;- Payload&lt;/span&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fontSize=16;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+          <mxGeometry x="-553" y="-227" width="273" height="224" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-6" value="Kserve Participant Automation Composition Element Configuration for Automation Composition B&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;- Define Inference Service Entities&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&amp;nbsp; + Sequence of Inference Services&lt;br style=&quot;border-color: var(--border-color);&quot;&gt;&lt;div style=&quot;border-color: var(--border-color); text-align: left;&quot;&gt;- Name&lt;/div&gt;&lt;div style=&quot;border-color: var(--border-color); text-align: left;&quot;&gt;&lt;span style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;- Namespace&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;border-color: var(--border-color); text-align: left;&quot;&gt;&lt;span style=&quot;border-color: var(--border-color); background-color: initial;&quot;&gt;- Payload&lt;/span&gt;&lt;/div&gt;" style="shape=note;whiteSpace=wrap;html=1;backgroundOutline=1;darkOpacity=0.05;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
+          <mxGeometry x="-556" y="24" width="274" height="204" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-7" value="" style="endArrow=none;dashed=1;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.996;exitY=0.278;exitDx=0;exitDy=0;exitPerimeter=0;entryX=0;entryY=0.25;entryDx=0;entryDy=0;" parent="1" source="hDoWaCIZZ_nO79t9Hxqc-5" target="hDoWaCIZZ_nO79t9Hxqc-1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="2" y="-30" as="sourcePoint" />
+            <mxPoint x="52" y="-80" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-8" value="" style="endArrow=none;dashed=1;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=1.022;exitY=0.288;exitDx=0;exitDy=0;exitPerimeter=0;entryX=-0.015;entryY=0.632;entryDx=0;entryDy=0;entryPerimeter=0;" parent="1" source="hDoWaCIZZ_nO79t9Hxqc-6" target="hDoWaCIZZ_nO79t9Hxqc-1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="-293" y="-157" as="sourcePoint" />
+            <mxPoint x="54" y="-73" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-9" value="" style="endArrow=none;html=1;rounded=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" parent="1" source="hDoWaCIZZ_nO79t9Hxqc-2" target="hDoWaCIZZ_nO79t9Hxqc-1" edge="1">
+          <mxGeometry width="50" height="50" relative="1" as="geometry">
+            <mxPoint x="67" y="28" as="sourcePoint" />
+            <mxPoint x="117" y="-22" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-11" value="Inference Service for Automation Composition A" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#fff2cc;strokeColor=#d6b656;" parent="1" vertex="1">
+          <mxGeometry x="430" y="352" width="141" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-12" value="Inference Service for Automation Composition B" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" parent="1" vertex="1">
+          <mxGeometry x="591" y="352" width="141" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-15" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;sketch=0;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.262;exitY=1.001;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="hDoWaCIZZ_nO79t9Hxqc-17" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="154" y="109" as="sourcePoint" />
+            <mxPoint x="156" y="151" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-16" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=halfCircle;endFill=0;entryX=0.5;entryY=0.5;endSize=6;strokeWidth=1;sketch=0;fontSize=12;curved=1;exitX=0.416;exitY=0.012;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="hDoWaCIZZ_nO79t9Hxqc-17" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="154" y="201" as="sourcePoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-17" value="" style="ellipse;whiteSpace=wrap;html=1;align=center;aspect=fixed;resizable=0;points=[];outlineConnect=0;sketch=0;fontSize=16;direction=south;fillColor=#B20000;fontColor=#ffffff;strokeColor=#B20000;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="149" y="150" width="10" height="10" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-18" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;sketch=0;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.262;exitY=1.001;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="hDoWaCIZZ_nO79t9Hxqc-20" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="85" y="240" as="sourcePoint" />
+            <mxPoint x="87" y="282" as="targetPoint" />
+            <Array as="points">
+              <mxPoint x="85" y="273" />
+            </Array>
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-19" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=halfCircle;endFill=0;entryX=0.5;entryY=0.5;endSize=6;strokeWidth=1;sketch=0;fontSize=12;curved=1;exitX=0.416;exitY=0.012;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="hDoWaCIZZ_nO79t9Hxqc-20" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="85" y="332" as="sourcePoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-20" value="" style="ellipse;whiteSpace=wrap;html=1;align=center;aspect=fixed;resizable=0;points=[];outlineConnect=0;sketch=0;fontSize=16;direction=south;fillColor=#B20000;fontColor=#ffffff;strokeColor=#B20000;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="80" y="281" width="10" height="10" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-21" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;sketch=0;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.262;exitY=1.001;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="hDoWaCIZZ_nO79t9Hxqc-23" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="157" y="240" as="sourcePoint" />
+            <mxPoint x="159" y="282" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-22" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=halfCircle;endFill=0;entryX=0.5;entryY=0.5;endSize=6;strokeWidth=1;sketch=0;fontSize=12;curved=1;exitX=0.416;exitY=0.012;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="hDoWaCIZZ_nO79t9Hxqc-23" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="157" y="332" as="sourcePoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-23" value="" style="ellipse;whiteSpace=wrap;html=1;align=center;aspect=fixed;resizable=0;points=[];outlineConnect=0;sketch=0;fontSize=16;direction=south;fillColor=#B20000;fontColor=#ffffff;strokeColor=#B20000;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="152" y="281" width="10" height="10" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-24" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=none;endFill=0;sketch=0;sourcePerimeterSpacing=0;targetPerimeterSpacing=0;fontSize=12;startSize=8;endSize=8;curved=1;exitX=0.262;exitY=1.001;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="hDoWaCIZZ_nO79t9Hxqc-26" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="85" y="110" as="sourcePoint" />
+            <mxPoint x="87" y="152" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-25" value="" style="rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=halfCircle;endFill=0;entryX=0.5;entryY=0.5;endSize=6;strokeWidth=1;sketch=0;fontSize=12;curved=1;exitX=0.416;exitY=0.012;exitDx=0;exitDy=0;exitPerimeter=0;" parent="1" target="hDoWaCIZZ_nO79t9Hxqc-26" edge="1">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="85" y="202" as="sourcePoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-26" value="" style="ellipse;whiteSpace=wrap;html=1;align=center;aspect=fixed;resizable=0;points=[];outlineConnect=0;sketch=0;fontSize=16;direction=south;fillColor=#B20000;fontColor=#ffffff;strokeColor=#B20000;strokeWidth=2;" parent="1" vertex="1">
+          <mxGeometry x="80" y="151" width="10" height="10" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-29" value="Instantiation" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="1" vertex="1">
+          <mxGeometry x="-26" y="143" width="104" height="31" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-30" value="Instantiation" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="1" vertex="1">
+          <mxGeometry x="-26" y="274" width="104" height="31" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-31" value="Monitoring" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="1" vertex="1">
+          <mxGeometry x="159" y="139.5" width="93" height="31" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-32" value="Monitoring" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="1" vertex="1">
+          <mxGeometry x="162" y="270.5" width="93" height="31" as="geometry" />
+        </mxCell>
+        <mxCell id="yh-L3AtmC00XoUG_2nvY-6" style="edgeStyle=none;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=12;startSize=8;endSize=8;" edge="1" parent="1" source="hDoWaCIZZ_nO79t9Hxqc-36" target="hDoWaCIZZ_nO79t9Hxqc-12">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="yh-L3AtmC00XoUG_2nvY-7" style="edgeStyle=none;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.545;entryY=0.979;entryDx=0;entryDy=0;entryPerimeter=0;fontSize=12;startSize=8;endSize=8;" edge="1" parent="1" source="hDoWaCIZZ_nO79t9Hxqc-36" target="hDoWaCIZZ_nO79t9Hxqc-11">
+          <mxGeometry relative="1" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-36" value="Kserve" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#b0e3e6;strokeColor=#0e8088;" parent="1" vertex="1">
+          <mxGeometry x="511" y="453" width="141" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="yh-L3AtmC00XoUG_2nvY-2" value="" style="group" vertex="1" connectable="0" parent="1">
+          <mxGeometry x="8" y="333" width="243" height="183" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-4" value="" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#e1d5e7;strokeColor=#9673a6;" parent="yh-L3AtmC00XoUG_2nvY-2" vertex="1">
+          <mxGeometry width="243" height="183" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-38" value="Kserve Paricipant" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" parent="yh-L3AtmC00XoUG_2nvY-2" vertex="1">
+          <mxGeometry x="45" width="143" height="31" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-13" value="Kserve Automation Composition Element for Automation Composition A" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#fff2cc;strokeColor=#d6b656;" parent="yh-L3AtmC00XoUG_2nvY-2" vertex="1">
+          <mxGeometry x="15" y="31" width="213" height="60" as="geometry" />
+        </mxCell>
+        <mxCell id="hDoWaCIZZ_nO79t9Hxqc-14" value="Kserve Automation Composition Element for Automation Composition B" style="rounded=0;whiteSpace=wrap;html=1;fontSize=16;fillColor=#f8cecc;strokeColor=#b85450;" parent="yh-L3AtmC00XoUG_2nvY-2" vertex="1">
+          <mxGeometry x="15.5" y="103" width="210.5" height="62" as="geometry" />
+        </mxCell>
+        <mxCell id="yh-L3AtmC00XoUG_2nvY-5" style="edgeStyle=none;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=12;startSize=8;endSize=8;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" target="hDoWaCIZZ_nO79t9Hxqc-36">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="388" y="423" as="sourcePoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="yh-L3AtmC00XoUG_2nvY-3" value="K8s API" style="sketch=0;html=1;dashed=0;whitespace=wrap;fillColor=#2875E2;strokeColor=#ffffff;points=[[0.005,0.63,0],[0.1,0.2,0],[0.9,0.2,0],[0.5,0,0],[0.995,0.63,0],[0.72,0.99,0],[0.5,1,0],[0.28,0.99,0]];verticalLabelPosition=bottom;align=center;verticalAlign=top;shape=mxgraph.kubernetes.icon;prIcon=api;fontSize=16;" vertex="1" parent="1">
+          <mxGeometry x="299" y="377" width="122" height="83" as="geometry" />
+        </mxCell>
+        <mxCell id="yh-L3AtmC00XoUG_2nvY-9" style="edgeStyle=none;curved=1;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontSize=12;startSize=8;endSize=8;" edge="1" parent="1" source="hDoWaCIZZ_nO79t9Hxqc-4">
+          <mxGeometry relative="1" as="geometry">
+            <mxPoint x="322" y="425" as="targetPoint" />
+          </mxGeometry>
+        </mxCell>
+        <mxCell id="yh-L3AtmC00XoUG_2nvY-10" value="REST" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" vertex="1" parent="1">
+          <mxGeometry x="252" y="393" width="61" height="31" as="geometry" />
+        </mxCell>
+        <mxCell id="yh-L3AtmC00XoUG_2nvY-12" value="K8s Cluster" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;fontSize=16;" vertex="1" parent="1">
+          <mxGeometry x="646" y="-200" width="101" height="31" as="geometry" />
+        </mxCell>
+      </root>
+    </mxGraphModel>
+  </diagram>
+</mxfile>
diff --git a/docs/clamp/acm/images/participants/kserve-participant.png b/docs/clamp/acm/images/participants/kserve-participant.png
new file mode 100755 (executable)
index 0000000..cc1f6b4
Binary files /dev/null and b/docs/clamp/acm/images/participants/kserve-participant.png differ