Skip to content

Commit

Permalink
Introduce notifications-connector-common-http (RedHatInsights#2335)
Browse files Browse the repository at this point in the history
Co-authored-by: Mikel Alejo <[email protected]>
  • Loading branch information
gwenneg and MikelAlejoBR authored Nov 15, 2023
1 parent 927c01e commit 7388a1a
Show file tree
Hide file tree
Showing 64 changed files with 562 additions and 698 deletions.
10 changes: 10 additions & 0 deletions .rhcicd/clowdapp-connector-drawer.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ objects:
env:
- name: ENV_NAME
value: ${ENV_NAME}
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_INTERVAL_MS
value: ${KAFKA_MAX_POLL_INTERVAL_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_RECORDS
Expand Down Expand Up @@ -128,6 +132,12 @@ parameters:
value: 250Mi
- name: MIN_REPLICAS
value: "3"
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
description: Maximum time in milliseconds allowed to establish an HTTP connection
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
description: Maximum time in milliseconds allowed to wait for HTTP data
value: "180000"
- name: NOTIFICATIONS_CONNECTOR_SEDA_CONCURRENT_CONSUMERS
description: Number of concurrent threads processing exchanges with SEDA
value: "20"
Expand Down
18 changes: 9 additions & 9 deletions .rhcicd/clowdapp-connector-email.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,10 @@ objects:
value: ${NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE}
- name: NOTIFICATIONS_CONNECTOR_FETCH_USERS_RBAC_ENABLED
value: ${NOTIFICATIONS_CONNECTOR_FETCH_USERS_RBAC_ENABLED}
- name: NOTIFICATIONS_CONNECTOR_HTTPS_CONNECT_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTPS_CONNECT_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTPS_SOCKET_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTPS_SOCKET_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_INTERVAL_MS
value: ${KAFKA_MAX_POLL_INTERVAL_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_RECORDS
Expand Down Expand Up @@ -217,12 +217,12 @@ parameters:
- name: NOTIFICATIONS_CONNECTOR_FETCH_USERS_RBAC_ENABLED
description: Is RBAC used to fetch the users?
value: "true"
- name: NOTIFICATIONS_CONNECTOR_HTTPS_CONNECT_TIMEOUT_MS
description: Maximum time in milliseconds allowed to establish an HTTPS connection
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_HTTPS_SOCKET_TIMEOUT_MS
description: Maximum time in milliseconds allowed to wait for HTTPS data
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
description: Maximum time in milliseconds allowed to establish an HTTP connection
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
description: Maximum time in milliseconds allowed to wait for HTTP data
value: "180000"
- name: NOTIFICATIONS_CONNECTOR_REDELIVERY_DELAY
description: Delay in milliseconds between two redelivery attempts
value: "1000"
Expand Down
10 changes: 10 additions & 0 deletions .rhcicd/clowdapp-connector-google-chat.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ objects:
value: ${ENV_NAME}
- name: NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE
value: ${NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE}
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_INTERVAL_MS
value: ${KAFKA_MAX_POLL_INTERVAL_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_RECORDS
Expand Down Expand Up @@ -135,6 +139,12 @@ parameters:
- name: NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE
description: Maximum size of the Camel endpoints cache
value: "100"
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
description: Maximum time in milliseconds allowed to establish an HTTP connection
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
description: Maximum time in milliseconds allowed to wait for HTTP data
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_REDELIVERY_DELAY
description: Delay in milliseconds between two redelivery attempts
value: "1000"
Expand Down
10 changes: 10 additions & 0 deletions .rhcicd/clowdapp-connector-microsoft-teams.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,10 @@ objects:
value: ${ENV_NAME}
- name: NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE
value: ${NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE}
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_INTERVAL_MS
value: ${KAFKA_MAX_POLL_INTERVAL_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_RECORDS
Expand Down Expand Up @@ -135,6 +139,12 @@ parameters:
- name: NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE
description: Maximum size of the Camel endpoints cache
value: "100"
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
description: Maximum time in milliseconds allowed to establish an HTTP connection
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
description: Maximum time in milliseconds allowed to wait for HTTP data
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_REDELIVERY_DELAY
description: Delay in milliseconds between two redelivery attempts
value: "1000"
Expand Down
16 changes: 8 additions & 8 deletions .rhcicd/clowdapp-connector-servicenow.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,10 @@ objects:
value: ${ENV_NAME}
- name: NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE
value: ${NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE}
- name: NOTIFICATIONS_CONNECTOR_HTTPS_CONNECT_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTPS_CONNECT_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTPS_SOCKET_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTPS_SOCKET_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_INTERVAL_MS
value: ${KAFKA_MAX_POLL_INTERVAL_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_RECORDS
Expand Down Expand Up @@ -145,11 +145,11 @@ parameters:
- name: NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE
description: Maximum size of the Camel endpoints cache
value: "100"
- name: NOTIFICATIONS_CONNECTOR_HTTPS_CONNECT_TIMEOUT_MS
description: Maximum time in milliseconds allowed to establish an HTTPS connection
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
description: Maximum time in milliseconds allowed to establish an HTTP connection
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_HTTPS_SOCKET_TIMEOUT_MS
description: Maximum time in milliseconds allowed to wait for HTTPS data
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
description: Maximum time in milliseconds allowed to wait for HTTP data
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_REDELIVERY_DELAY
description: Delay in milliseconds between two redelivery attempts
Expand Down
16 changes: 8 additions & 8 deletions .rhcicd/clowdapp-connector-splunk.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,10 @@ objects:
value: ${ENV_NAME}
- name: NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE
value: ${NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE}
- name: NOTIFICATIONS_CONNECTOR_HTTPS_CONNECT_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTPS_CONNECT_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTPS_SOCKET_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTPS_SOCKET_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
value: ${NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_INTERVAL_MS
value: ${KAFKA_MAX_POLL_INTERVAL_MS}
- name: NOTIFICATIONS_CONNECTOR_KAFKA_INCOMING_MAX_POLL_RECORDS
Expand Down Expand Up @@ -145,11 +145,11 @@ parameters:
- name: NOTIFICATIONS_CONNECTOR_ENDPOINT_CACHE_MAX_SIZE
description: Maximum size of the Camel endpoints cache
value: "100"
- name: NOTIFICATIONS_CONNECTOR_HTTPS_CONNECT_TIMEOUT_MS
description: Maximum time in milliseconds allowed to establish an HTTPS connection
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
description: Maximum time in milliseconds allowed to establish an HTTP connection
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_HTTPS_SOCKET_TIMEOUT_MS
description: Maximum time in milliseconds allowed to wait for HTTPS data
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
description: Maximum time in milliseconds allowed to wait for HTTP data
value: "2500"
- name: NOTIFICATIONS_CONNECTOR_REDELIVERY_DELAY
description: Delay in milliseconds between two redelivery attempts
Expand Down
4 changes: 2 additions & 2 deletions .rhcicd/clowdapp-connector-webhook.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ parameters:
description: Maximum size of the Camel endpoints cache
value: "100"
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECT_TIMEOUT_MS
description: Maximum time in milliseconds allowed to establish an HTTPS connection
description: Maximum time in milliseconds allowed to establish an HTTP connection
value: "30000"
- name: NOTIFICATIONS_CONNECTOR_HTTP_CONNECTIONS_PER_ROUTE
description: Maximum number of HTTP connections per route
Expand All @@ -157,7 +157,7 @@ parameters:
description: Maximum number of HTTP connections
value: "200"
- name: NOTIFICATIONS_CONNECTOR_HTTP_SOCKET_TIMEOUT_MS
description: Maximum time in milliseconds allowed to wait for HTTPS data
description: Maximum time in milliseconds allowed to wait for HTTP data
value: "30000"
- name: NOTIFICATIONS_CONNECTOR_REDELIVERY_DELAY
description: Delay in milliseconds between two redelivery attempts
Expand Down
94 changes: 94 additions & 0 deletions connector-common-http/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>

<artifactId>notifications-connector-common-http</artifactId>

<parent>
<groupId>com.redhat.cloud.notifications</groupId>
<artifactId>notifications-parent</artifactId>
<version>1.0.0-SNAPSHOT</version>
</parent>

<profiles>

<!--
When Maven compiles a project with the "-Dmaven.test.skip" option, the tests compilation and execution are skipped
but Maven still resolves the dependencies from the "test" scope and fails if these dependencies cannot be found.
This is considered a Maven bug by many users and even though it was reported as such several years ago, it's never
been fixed. The following profile works around that limitation and makes the compilation successful when tests are
skipped even if the listed test dependencies are not available.
-->
<profile>
<id>resolve-test-jars-if-tests-are-not-skipped</id>
<activation>
<property>
<name>maven.test.skip</name>
<value>!true</value>
</property>
</activation>
<dependencies>
<dependency>
<groupId>com.redhat.cloud.notifications</groupId>
<artifactId>notifications-common</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
</profile>

</profiles>

<dependencies>

<!-- Scope: compile -->

<!-- notifications modules -->
<dependency>
<groupId>com.redhat.cloud.notifications</groupId>
<artifactId>notifications-connector-common</artifactId>
<version>${project.version}</version>
</dependency>

<!-- Camel -->
<dependency>
<groupId>org.apache.camel.quarkus</groupId>
<artifactId>camel-quarkus-http</artifactId>
</dependency>

</dependencies>

<build>
<plugins>

<!-- The following plugin is required to inject beans from this module into other modules. -->
<plugin>
<groupId>org.jboss.jandex</groupId>
<artifactId>jandex-maven-plugin</artifactId>
<version>1.2.3</version>
<executions>
<execution>
<id>make-index</id>
<goals>
<goal>jandex</goal>
</goals>
</execution>
</executions>
</plugin>

<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>${compiler-plugin.version}</version>
</plugin>

<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>${surefire-plugin.version}</version>
</plugin>

</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.redhat.cloud.notifications.connector.http;

public class ExchangeProperty {

public static final String HTTP_CLIENT_ERROR = "httpClientError";
public static final String HTTP_SERVER_ERROR = "httpServerError";
public static final String HTTP_STATUS_CODE = "httpStatusCode";
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.redhat.cloud.notifications.connector.http;

import com.redhat.cloud.notifications.connector.CamelComponentConfigurator;
import io.quarkus.logging.Log;
import jakarta.enterprise.context.Dependent;
import jakarta.inject.Inject;
import org.apache.camel.CamelContext;
import org.apache.camel.component.http.HttpComponent;
import org.apache.hc.core5.util.Timeout;

@Dependent
public class HttpComponentConfigurator implements CamelComponentConfigurator {

@Inject
HttpConnectorConfig connectorConfig;

@Override
public void configure(CamelContext context) {
for (String httpComponent : connectorConfig.getHttpComponents()) {
HttpComponent component = context.getComponent(httpComponent, HttpComponent.class);
component.setConnectTimeout(Timeout.ofMilliseconds(connectorConfig.getHttpConnectTimeout()));
component.setConnectionsPerRoute(connectorConfig.getHttpConnectionsPerRoute());
component.setFollowRedirects(connectorConfig.isFollowRedirects());
component.setMaxTotalConnections(connectorConfig.getHttpMaxTotalConnections());
component.setSoTimeout(Timeout.ofMilliseconds(connectorConfig.getHttpSocketTimeout()));
Log.debugf("Configured %s component", httpComponent);
}
}
}
Loading

0 comments on commit 7388a1a

Please sign in to comment.