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

lahirujayathilake pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-custos.git

commit c7ad339f006e4ffd9655b0e813406dc4358e87b8
Author: lahiruj <[email protected]>
AuthorDate: Wed Aug 28 15:03:50 2024 -0400

    redhat released keycloak version and docker compose to run services
---
 compose/dbinit/init-db.sh                          | 14 +++++
 compose/docker-compose.yml                         | 67 ++++++++++++++++++++++
 compose/vault/config/vault-config.hcl              | 11 ++++
 pom.xml                                            |  8 ++-
 .../federated/client/keycloak/KeycloakClient.java  |  6 +-
 .../federated/client/keycloak/KeycloakUtils.java   |  4 +-
 .../custos/service/profile/UserProfileService.java |  4 +-
 7 files changed, 106 insertions(+), 8 deletions(-)

diff --git a/compose/dbinit/init-db.sh b/compose/dbinit/init-db.sh
new file mode 100755
index 000000000..2b51b4bc9
--- /dev/null
+++ b/compose/dbinit/init-db.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+
+echo "Creating databases and users..."
+
+mysql -u root -p"$MYSQL_ROOT_PASSWORD" <<-EOSQL
+    CREATE DATABASE IF NOT EXISTS custos;
+    CREATE DATABASE IF NOT EXISTS keycloak;
+    CREATE USER IF NOT EXISTS 'admin'@'%' IDENTIFIED BY 'admin';
+    GRANT ALL PRIVILEGES ON custos.* TO 'admin'@'%';
+    GRANT ALL PRIVILEGES ON keycloak.* TO 'admin'@'%';
+    FLUSH PRIVILEGES;
+EOSQL
+
+echo "Databases and users created"
\ No newline at end of file
diff --git a/compose/docker-compose.yml b/compose/docker-compose.yml
new file mode 100644
index 000000000..cd1519dad
--- /dev/null
+++ b/compose/docker-compose.yml
@@ -0,0 +1,67 @@
+version: "3.8"
+services:
+  keycloak:
+    image: quay.io/keycloak/keycloak:24.0.0
+    environment:
+      KC_HOSTNAME: localhost
+      KC_HOSTNAME_PORT: 8080
+      KC_HOSTNAME_STRICT_BACKCHANNEL: "true"
+      KC_DB: mysql
+      KC_DB_URL: jdbc:mysql://db:3306/keycloak?characterEncoding=UTF-8
+      KC_DB_USERNAME: admin
+      KC_DB_PASSWORD: admin
+      KEYCLOAK_ADMIN: admin
+      KEYCLOAK_ADMIN_PASSWORD: admin
+    ports:
+      - "8080:8080"
+    command:
+      - start-dev
+    restart: unless-stopped
+
+  db:
+    container_name: custos_db
+    image: mysql:8.0.31
+    restart: always
+    command: --character-set-server=utf8 --collation-server=utf8_general_ci
+    ports:
+      - "3306:3306"
+    environment:
+      MYSQL_ROOT_PASSWORD: root
+      MYSQL_USER: admin
+      MYSQL_PASSWORD: admin
+      MAX_ALLOWED_PACKET: 1073741824
+    volumes:
+      - ./dbinit:/docker-entrypoint-initdb.d
+
+  adminer:
+    image: adminer
+    restart: always
+    ports:
+      - 18080:8080
+
+  vault:
+    image: vault:1.11.0
+    container_name: vault
+    restart: unless-stopped
+    ports:
+      - "8201:8201"
+      - "8200:8200"
+    environment:
+      VAULT_ADDR: http://0.0.0.0:8201
+      VAULT_API_ADDR: http://127.0.0.1:8200
+      VAULT_CLUSTER_ADDR: http://127.0.0.1:8201
+      VAULT_LOCAL_CONFIG: '{"listener": [{"tcp":{"address": 
"0.0.0.0:8201","tls_disable":"1"}}], "default_lease_ttl": "168h", 
"max_lease_ttl": "720h"}, "ui": true}'
+    cap_add:
+      - IPC_LOCK
+    volumes:
+      - ./vault/data:/vault/data
+      - ./vault/config:/vault/config
+    entrypoint: vault server
+    command: -config=/vault/config/vault-config.hcl
+    healthcheck:
+      test: "vault login 00000000-0000-0000-0000-000000000000 &&
+                   vault kv get secret &&
+                   vault secrets disable secret &&
+                   vault secrets enable -version=1 -path=secret kv &&
+                   vault secrets enable -version=1 -path=resourcesecret kv"
+      interval: 5s
\ No newline at end of file
diff --git a/compose/vault/config/vault-config.hcl 
b/compose/vault/config/vault-config.hcl
new file mode 100644
index 000000000..11d7e4d59
--- /dev/null
+++ b/compose/vault/config/vault-config.hcl
@@ -0,0 +1,11 @@
+storage "raft" {
+  path = "./vault/data"
+  node_id = "node1"
+}
+
+listener "tcp" {
+  address = "0.0.0.0:8200"
+  tls_disable = 1
+}
+
+ui = true
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index adb6889a2..86e6199e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -131,6 +131,11 @@
                 <artifactId>spring-vault-core</artifactId>
                 <version>${spring.vault.version}</version>
             </dependency>
+            <dependency>
+                <groupId>jakarta.ws.rs</groupId>
+                <artifactId>jakarta.ws.rs-api</artifactId>
+                <version>${jakarta.ws.version}</version>
+            </dependency>
         </dependencies>
     </dependencyManagement>
 
@@ -187,7 +192,7 @@
         <com.google.protobuf.util>3.21.11</com.google.protobuf.util>
 
         <mysql.connector.java>8.0.31</mysql.connector.java>
-        <keycloak.admin.version>20.0.3</keycloak.admin.version>
+        <keycloak.admin.version>24.0.5</keycloak.admin.version>
         <testng.version>6.8</testng.version>
         <org.json.version>20240303</org.json.version>
         <nimbusds.jwt.version>9.40</nimbusds.jwt.version>
@@ -203,6 +208,7 @@
         <ssh.username>ubuntu</ssh.username>
         <project.version>1.1-SNAPSHOT</project.version>
         <clusterIssuer>letsencrypt-prod</clusterIssuer>
+        <jakarta.ws.version>4.0.0</jakarta.ws.version>
     </properties>
 
     <repositories>
diff --git 
a/services/src/main/java/org/apache/custos/service/federated/client/keycloak/KeycloakClient.java
 
b/services/src/main/java/org/apache/custos/service/federated/client/keycloak/KeycloakClient.java
index ab516e635..495e24a5b 100644
--- 
a/services/src/main/java/org/apache/custos/service/federated/client/keycloak/KeycloakClient.java
+++ 
b/services/src/main/java/org/apache/custos/service/federated/client/keycloak/KeycloakClient.java
@@ -20,8 +20,10 @@
 package org.apache.custos.service.federated.client.keycloak;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.custos.core.exception.UnauthorizedException;
+import jakarta.ws.rs.NotFoundException;
+import jakarta.ws.rs.core.Response;
 import org.apache.custos.core.constants.Constants;
+import org.apache.custos.core.exception.UnauthorizedException;
 import org.apache.http.HttpStatus;
 import org.keycloak.admin.client.Keycloak;
 import org.keycloak.admin.client.resource.GroupResource;
@@ -50,8 +52,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import javax.validation.constraints.NotNull;
-import javax.ws.rs.NotFoundException;
-import javax.ws.rs.core.Response;
 import java.net.URI;
 import java.net.http.HttpClient;
 import java.net.http.HttpRequest;
diff --git 
a/services/src/main/java/org/apache/custos/service/federated/client/keycloak/KeycloakUtils.java
 
b/services/src/main/java/org/apache/custos/service/federated/client/keycloak/KeycloakUtils.java
index cb897932c..7decf06aa 100644
--- 
a/services/src/main/java/org/apache/custos/service/federated/client/keycloak/KeycloakUtils.java
+++ 
b/services/src/main/java/org/apache/custos/service/federated/client/keycloak/KeycloakUtils.java
@@ -19,6 +19,8 @@
 
 package org.apache.custos.service.federated.client.keycloak;
 
+import jakarta.ws.rs.client.Client;
+import jakarta.ws.rs.client.ClientBuilder;
 import org.keycloak.admin.client.Keycloak;
 import org.keycloak.admin.client.KeycloakBuilder;
 import org.slf4j.Logger;
@@ -27,8 +29,6 @@ import org.slf4j.LoggerFactory;
 import javax.net.ssl.SSLContext;
 import javax.net.ssl.TrustManager;
 import javax.net.ssl.TrustManagerFactory;
-import javax.ws.rs.client.Client;
-import javax.ws.rs.client.ClientBuilder;
 import java.security.KeyManagementException;
 import java.security.KeyStore;
 import java.security.KeyStoreException;
diff --git 
a/services/src/main/java/org/apache/custos/service/profile/UserProfileService.java
 
b/services/src/main/java/org/apache/custos/service/profile/UserProfileService.java
index 3464ab53a..e05b71257 100644
--- 
a/services/src/main/java/org/apache/custos/service/profile/UserProfileService.java
+++ 
b/services/src/main/java/org/apache/custos/service/profile/UserProfileService.java
@@ -19,6 +19,8 @@
 
 package org.apache.custos.service.profile;
 
+import jakarta.persistence.EntityNotFoundException;
+import jakarta.ws.rs.NotFoundException;
 import org.apache.custos.core.mapper.user.AttributeUpdateMetadataMapper;
 import org.apache.custos.core.mapper.user.GroupMapper;
 import org.apache.custos.core.mapper.user.StatusUpdateMetadataMapper;
@@ -55,13 +57,11 @@ import 
org.apache.custos.core.user.profile.api.UserProfileAttributeUpdateMetadat
 import org.apache.custos.core.user.profile.api.UserProfileRequest;
 import org.apache.custos.core.user.profile.api.UserProfileStatusUpdateMetadata;
 import org.apache.custos.service.exceptions.InternalServerException;
-import jakarta.persistence.EntityNotFoundException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import javax.ws.rs.NotFoundException;
 import java.text.MessageFormat;
 import java.util.ArrayList;
 import java.util.Collections;

Reply via email to