You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2024/03/08 14:17:09 UTC

(camel) branch main updated (8b56b78392b -> a3ff92203ee)

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


    from 8b56b78392b Central (#13420)
     new e48a29a44ea CAMEL-20543 - Camel-AWS-Bedrock-Agent: Support more operations on the producer side
     new c18843a1c60 CAMEL-20543 - Camel-AWS-Bedrock-Agent: Support more operations on the producer side
     new a3ff92203ee CAMEL-20543 - Camel-AWS-Bedrock-Agent: Support more operations on the producer side

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../catalog/components/aws-bedrock-agent.json      |  4 +-
 .../aws2/bedrock/agent/aws-bedrock-agent.json      |  4 +-
 .../aws2/bedrock/agent/BedrockAgentOperations.java |  4 +-
 .../aws2/bedrock/agent/BedrockAgentProducer.java   | 63 ++++++++++++++++++++--
 .../agent/integration/BedrockAgentProducerIT.java  | 17 +++++-
 5 files changed, 82 insertions(+), 10 deletions(-)


(camel) 02/03: CAMEL-20543 - Camel-AWS-Bedrock-Agent: Support more operations on the producer side

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit c18843a1c60f9abe5fb97062d24e0ed672184de0
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Mar 8 14:36:45 2024 +0100

    CAMEL-20543 - Camel-AWS-Bedrock-Agent: Support more operations on the producer side
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../org/apache/camel/catalog/components/aws-bedrock-agent.json        | 4 ++--
 .../apache/camel/component/aws2/bedrock/agent/aws-bedrock-agent.json  | 4 ++--
 .../camel/component/aws2/bedrock/agent/BedrockAgentProducer.java      | 1 -
 .../aws2/bedrock/agent/integration/BedrockAgentProducerIT.java        | 2 --
 4 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock-agent.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock-agent.json
index ead55d6577f..d3b7a7545d5 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock-agent.json
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/components/aws-bedrock-agent.json
@@ -28,7 +28,7 @@
     "knowledgeBaseId": { "index": 2, "kind": "property", "displayName": "Knowledge Base Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "Define the Knowledge Base Id we are going to use" },
     "lazyStartProducer": { "index": 3, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...]
     "modelId": { "index": 4, "kind": "property", "displayName": "Model Id", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "enum": [ "anthropic.claude-instant-v1", "anthropic.claude-v2", "anthropic.claude-v2:1" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "descr [...]
-    "operation": { "index": 5, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentOperations", "enum": [ "startIngestionJob" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "descript [...]
+    "operation": { "index": 5, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentOperations", "enum": [ "startIngestionJob", "listIngestionJobs" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "conf [...]
     "overrideEndpoint": { "index": 6, "kind": "property", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used [...]
     "pojoRequest": { "index": 7, "kind": "property", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" },
     "profileCredentialsName": { "index": 8, "kind": "property", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this p [...]
@@ -59,7 +59,7 @@
     "dataSourceId": { "index": 1, "kind": "parameter", "displayName": "Data Source Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "Define the Data source Id we are going to use" },
     "knowledgeBaseId": { "index": 2, "kind": "parameter", "displayName": "Knowledge Base Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "Define the Knowledge Base Id we are going to use" },
     "modelId": { "index": 3, "kind": "parameter", "displayName": "Model Id", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "enum": [ "anthropic.claude-instant-v1", "anthropic.claude-v2", "anthropic.claude-v2:1" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "desc [...]
-    "operation": { "index": 4, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentOperations", "enum": [ "startIngestionJob" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "descrip [...]
+    "operation": { "index": 4, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentOperations", "enum": [ "startIngestionJob", "listIngestionJobs" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "con [...]
     "overrideEndpoint": { "index": 5, "kind": "parameter", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be use [...]
     "pojoRequest": { "index": 6, "kind": "parameter", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" },
     "profileCredentialsName": { "index": 7, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this  [...]
diff --git a/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/agent/aws-bedrock-agent.json b/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/agent/aws-bedrock-agent.json
index ead55d6577f..d3b7a7545d5 100644
--- a/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/agent/aws-bedrock-agent.json
+++ b/components/camel-aws/camel-aws-bedrock/src/generated/resources/META-INF/org/apache/camel/component/aws2/bedrock/agent/aws-bedrock-agent.json
@@ -28,7 +28,7 @@
     "knowledgeBaseId": { "index": 2, "kind": "property", "displayName": "Knowledge Base Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "Define the Knowledge Base Id we are going to use" },
     "lazyStartProducer": { "index": 3, "kind": "property", "displayName": "Lazy Start Producer", "group": "producer", "label": "producer", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail [...]
     "modelId": { "index": 4, "kind": "property", "displayName": "Model Id", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "enum": [ "anthropic.claude-instant-v1", "anthropic.claude-v2", "anthropic.claude-v2:1" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "descr [...]
-    "operation": { "index": 5, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentOperations", "enum": [ "startIngestionJob" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "descript [...]
+    "operation": { "index": 5, "kind": "property", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentOperations", "enum": [ "startIngestionJob", "listIngestionJobs" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "conf [...]
     "overrideEndpoint": { "index": 6, "kind": "property", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be used [...]
     "pojoRequest": { "index": 7, "kind": "property", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" },
     "profileCredentialsName": { "index": 8, "kind": "property", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this p [...]
@@ -59,7 +59,7 @@
     "dataSourceId": { "index": 1, "kind": "parameter", "displayName": "Data Source Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "Define the Data source Id we are going to use" },
     "knowledgeBaseId": { "index": 2, "kind": "parameter", "displayName": "Knowledge Base Id", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "Define the Knowledge Base Id we are going to use" },
     "modelId": { "index": 3, "kind": "parameter", "displayName": "Model Id", "group": "producer", "label": "", "required": true, "type": "string", "javaType": "java.lang.String", "enum": [ "anthropic.claude-instant-v1", "anthropic.claude-v2", "anthropic.claude-v2:1" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "desc [...]
-    "operation": { "index": 4, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentOperations", "enum": [ "startIngestionJob" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "descrip [...]
+    "operation": { "index": 4, "kind": "parameter", "displayName": "Operation", "group": "producer", "label": "", "required": true, "type": "object", "javaType": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentOperations", "enum": [ "startIngestionJob", "listIngestionJobs" ], "deprecated": false, "deprecationNote": "", "autowired": false, "secret": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "con [...]
     "overrideEndpoint": { "index": 5, "kind": "parameter", "displayName": "Override Endpoint", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "Set the need for overriding the endpoint. This option needs to be use [...]
     "pojoRequest": { "index": 6, "kind": "parameter", "displayName": "Pojo Request", "group": "producer", "label": "", "required": false, "type": "boolean", "javaType": "boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "If we want to use a POJO request as body or not" },
     "profileCredentialsName": { "index": 7, "kind": "parameter", "displayName": "Profile Credentials Name", "group": "producer", "label": "", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "defaultValue": "false", "configurationClass": "org.apache.camel.component.aws2.bedrock.agent.BedrockAgentConfiguration", "configurationField": "configuration", "description": "If using a profile credentials provider, this  [...]
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentProducer.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentProducer.java
index de54bc34ed8..4ba7a381003 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentProducer.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentProducer.java
@@ -131,7 +131,6 @@ public class BedrockAgentProducer extends DefaultProducer {
         }
     }
 
-
     private void listIngestionJobs(BedrockAgentClient bedrockAgentClient, Exchange exchange)
             throws InvalidPayloadException {
         if (getConfiguration().isPojoRequest()) {
diff --git a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java
index 7d75c128ebc..8553a5150c4 100644
--- a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java
+++ b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java
@@ -25,8 +25,6 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInstance;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
-import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 
 // Must be manually tested. Provide your own accessKey and secretKey using -Daws.manual.access.key and -Daws.manual.secret.key
 /*@EnabledIfSystemProperties({


(camel) 01/03: CAMEL-20543 - Camel-AWS-Bedrock-Agent: Support more operations on the producer side

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit e48a29a44ea3e25a5081c2452da0e8773edc2510
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Mar 8 14:23:38 2024 +0100

    CAMEL-20543 - Camel-AWS-Bedrock-Agent: Support more operations on the producer side
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../aws2/bedrock/agent/BedrockAgentOperations.java |  4 +-
 .../aws2/bedrock/agent/BedrockAgentProducer.java   | 64 ++++++++++++++++++++--
 .../agent/integration/BedrockAgentProducerIT.java  | 21 ++++++-
 3 files changed, 81 insertions(+), 8 deletions(-)

diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentOperations.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentOperations.java
index 45b2b2cbff8..57710e6951e 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentOperations.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentOperations.java
@@ -18,5 +18,7 @@ package org.apache.camel.component.aws2.bedrock.agent;
 
 public enum BedrockAgentOperations {
 
-    startIngestionJob
+    startIngestionJob,
+
+    listIngestionJobs
 }
diff --git a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentProducer.java b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentProducer.java
index ba479bd3d0a..de54bc34ed8 100644
--- a/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentProducer.java
+++ b/components/camel-aws/camel-aws-bedrock/src/main/java/org/apache/camel/component/aws2/bedrock/agent/BedrockAgentProducer.java
@@ -27,9 +27,10 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import software.amazon.awssdk.awscore.exception.AwsServiceException;
 import software.amazon.awssdk.services.bedrockagent.BedrockAgentClient;
+import software.amazon.awssdk.services.bedrockagent.model.ListIngestionJobsRequest;
+import software.amazon.awssdk.services.bedrockagent.model.ListIngestionJobsResponse;
 import software.amazon.awssdk.services.bedrockagent.model.StartIngestionJobRequest;
 import software.amazon.awssdk.services.bedrockagent.model.StartIngestionJobResponse;
-import software.amazon.awssdk.services.bedrockagentruntime.model.*;
 
 /**
  * A Producer which sends messages to the Amazon Bedrock Agent Service <a href="http://aws.amazon.com/bedrock/">AWS
@@ -50,6 +51,9 @@ public class BedrockAgentProducer extends DefaultProducer {
             case startIngestionJob:
                 startIngestionJob(getEndpoint().getBedrockAgentClient(), exchange);
                 break;
+            case listIngestionJobs:
+                listIngestionJobs(getEndpoint().getBedrockAgentClient(), exchange);
+                break;
             default:
                 throw new IllegalArgumentException("Unsupported operation");
         }
@@ -95,7 +99,7 @@ public class BedrockAgentProducer extends DefaultProducer {
                     throw ase;
                 }
                 Message message = getMessageForResponse(exchange);
-                prepareResponse(result, message);
+                prepareIngestionJobResponse(result, message);
             }
         } else {
             String knowledgeBaseId;
@@ -123,14 +127,66 @@ public class BedrockAgentProducer extends DefaultProducer {
             builder.dataSourceId(dataSourceId);
             StartIngestionJobResponse output = bedrockAgentClient.startIngestionJob(builder.build());
             Message message = getMessageForResponse(exchange);
-            prepareResponse(output, message);
+            prepareIngestionJobResponse(output, message);
+        }
+    }
+
+
+    private void listIngestionJobs(BedrockAgentClient bedrockAgentClient, Exchange exchange)
+            throws InvalidPayloadException {
+        if (getConfiguration().isPojoRequest()) {
+            Object payload = exchange.getMessage().getMandatoryBody();
+            if (payload instanceof ListIngestionJobsRequest) {
+                ListIngestionJobsResponse result;
+                try {
+                    result = bedrockAgentClient.listIngestionJobs((ListIngestionJobsRequest) payload);
+                } catch (AwsServiceException ase) {
+                    LOG.trace("Start Ingestion Job command returned the error code {}", ase.awsErrorDetails().errorCode());
+                    throw ase;
+                }
+                Message message = getMessageForResponse(exchange);
+                prepareListIngestionJobsResponse(result, message);
+            }
+        } else {
+            String knowledgeBaseId;
+            String dataSourceId;
+            ListIngestionJobsRequest.Builder builder = ListIngestionJobsRequest.builder();
+            if (ObjectHelper.isEmpty(getConfiguration().getKnowledgeBaseId())) {
+                if (ObjectHelper.isNotEmpty(exchange.getMessage().getHeader(BedrockAgentConstants.KNOWLEDGE_BASE_ID))) {
+                    knowledgeBaseId = exchange.getIn().getHeader(BedrockAgentConstants.KNOWLEDGE_BASE_ID, String.class);
+                } else {
+                    throw new IllegalArgumentException("KnowledgeBaseId must be specified");
+                }
+            } else {
+                knowledgeBaseId = getConfiguration().getKnowledgeBaseId();
+            }
+            if (ObjectHelper.isEmpty(getConfiguration().getDataSourceId())) {
+                if (ObjectHelper.isNotEmpty(exchange.getMessage().getHeader(BedrockAgentConstants.DATASOURCE_ID))) {
+                    dataSourceId = exchange.getIn().getHeader(BedrockAgentConstants.DATASOURCE_ID, String.class);
+                } else {
+                    throw new IllegalArgumentException("DataSourceId must be specified");
+                }
+            } else {
+                dataSourceId = getConfiguration().getDataSourceId();
+            }
+            builder.knowledgeBaseId(knowledgeBaseId);
+            builder.dataSourceId(dataSourceId);
+            ListIngestionJobsResponse output = bedrockAgentClient.listIngestionJobs(builder.build());
+            Message message = getMessageForResponse(exchange);
+            prepareListIngestionJobsResponse(output, message);
         }
     }
 
-    private void prepareResponse(StartIngestionJobResponse result, Message message) {
+    private void prepareIngestionJobResponse(StartIngestionJobResponse result, Message message) {
         message.setBody(result.ingestionJob().ingestionJobId());
     }
 
+    private void prepareListIngestionJobsResponse(ListIngestionJobsResponse result, Message message) {
+        if (result.hasIngestionJobSummaries()) {
+            message.setBody(result.ingestionJobSummaries());
+        }
+    }
+
     public static Message getMessageForResponse(final Exchange exchange) {
         return exchange.getMessage();
     }
diff --git a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java
index cf370902ac7..7d75c128ebc 100644
--- a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java
+++ b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java
@@ -29,10 +29,10 @@ import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
 import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 
 // Must be manually tested. Provide your own accessKey and secretKey using -Daws.manual.access.key and -Daws.manual.secret.key
-@EnabledIfSystemProperties({
+/*@EnabledIfSystemProperties({
         @EnabledIfSystemProperty(named = "aws.manual.access.key", matches = ".*", disabledReason = "Access key not provided"),
         @EnabledIfSystemProperty(named = "aws.manual.secret.key", matches = ".*", disabledReason = "Secret key not provided")
-})
+})*/
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 class BedrockAgentProducerIT extends CamelTestSupport {
 
@@ -54,13 +54,28 @@ class BedrockAgentProducerIT extends CamelTestSupport {
         MockEndpoint.assertIsSatisfied(context);
     }
 
+    @Test
+    public void testListIngestionJobs() throws InterruptedException {
+
+        result.expectedMessageCount(1);
+        final Exchange result = template.send("direct:list_ingestion_jobs", exchange -> {
+            exchange.getMessage().setHeader(BedrockAgentConstants.KNOWLEDGE_BASE_ID, "QOZ68KOXTS");
+            exchange.getMessage().setHeader(BedrockAgentConstants.DATASOURCE_ID, "9V85PTUEAH");
+        });
+
+        MockEndpoint.assertIsSatisfied(context);
+    }
+
     @Override
     protected RouteBuilder createRouteBuilder() {
         return new RouteBuilder() {
             @Override
             public void configure() {
                 from("direct:start_ingestion")
-                        .to("aws-bedrock-agent:label?accessKey=RAW({{aws.manual.access.key}})&secretKey=RAW({{aws.manual.secret.key}}&region=us-east-1&operation=startIngestionJob&knowledgeBaseId=QOZ68KOXTS")
+                        .to("aws-bedrock-agent:label?useDefaultCredentialsProvider=true&region=us-east-1&operation=startIngestionJob")
+                        .to(result);
+                from("direct:list_ingestion_jobs")
+                        .to("aws-bedrock-agent:label?useDefaultCredentialsProvider=true&region=us-east-1&operation=listIngestionJobs")
                         .log("${body}")
                         .to(result);
             }


(camel) 03/03: CAMEL-20543 - Camel-AWS-Bedrock-Agent: Support more operations on the producer side

Posted by ac...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit a3ff92203ee283b78c6a5598c6afc56896abadc5
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Fri Mar 8 14:41:02 2024 +0100

    CAMEL-20543 - Camel-AWS-Bedrock-Agent: Support more operations on the producer side
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 .../aws2/bedrock/agent/integration/BedrockAgentProducerIT.java | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java
index 8553a5150c4..2de238a7fb4 100644
--- a/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java
+++ b/components/camel-aws/camel-aws-bedrock/src/test/java/org/apache/camel/component/aws2/bedrock/agent/integration/BedrockAgentProducerIT.java
@@ -25,12 +25,14 @@ import org.apache.camel.component.mock.MockEndpoint;
 import org.apache.camel.test.junit5.CamelTestSupport;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInstance;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperties;
+import org.junit.jupiter.api.condition.EnabledIfSystemProperty;
 
 // Must be manually tested. Provide your own accessKey and secretKey using -Daws.manual.access.key and -Daws.manual.secret.key
-/*@EnabledIfSystemProperties({
+@EnabledIfSystemProperties({
         @EnabledIfSystemProperty(named = "aws.manual.access.key", matches = ".*", disabledReason = "Access key not provided"),
         @EnabledIfSystemProperty(named = "aws.manual.secret.key", matches = ".*", disabledReason = "Secret key not provided")
-})*/
+})
 @TestInstance(TestInstance.Lifecycle.PER_CLASS)
 class BedrockAgentProducerIT extends CamelTestSupport {
 
@@ -70,10 +72,10 @@ class BedrockAgentProducerIT extends CamelTestSupport {
             @Override
             public void configure() {
                 from("direct:start_ingestion")
-                        .to("aws-bedrock-agent:label?useDefaultCredentialsProvider=true&region=us-east-1&operation=startIngestionJob")
+                        .to("aws-bedrock-agent:label?accessKey=RAW({{aws.manual.access.key}})&secretKey=RAW({{aws.manual.secret.key}}&region=us-east-1&operation=startIngestionJob")
                         .to(result);
                 from("direct:list_ingestion_jobs")
-                        .to("aws-bedrock-agent:label?useDefaultCredentialsProvider=true&region=us-east-1&operation=listIngestionJobs")
+                        .to("aws-bedrock-agent:label?accessKey=RAW({{aws.manual.access.key}})&secretKey=RAW({{aws.manual.secret.key}}&region=us-east-1&operation=listIngestionJobs")
                         .log("${body}")
                         .to(result);
             }