odpi / egeria

Egeria core
https://egeria-project.org
Apache License 2.0
812 stars 261 forks source link

Exception: org.odpi.openmetadata.frameworks.connectors.ffdc.InvalidParameterException: OMAG-MULTI-TENANT-404-001 The OMAG Server cocoMDS1 is not available to service a request from user admin #8097

Closed wcc1433 closed 5 months ago

wcc1433 commented 8 months ago

Existing/related issue?

No response

Current Behavior

I'm trying to use Egeria deployed in a Docker environment. Currently, I have the following 3 services running: OMAG Server Platform:

docker run --name egeria --net=host -d \
-v /opt/egeria/egeria/data:/deployments/data \
-v /opt/egeria/egeria/application.properties:/deployments/application.properties \
odpi/egeria:4.3

OMAG Rest Api Server:

docker run --name egeria-api --net=host -d -p 8443:8443 \
-v /opt/egeria/egeria/ui-chassis-spring-4.3.jar:/deployments/user-interface/ui-chassis-spring-4.3.jar \
odpi/egeria:4.3 /bin/bash -c "java -jar /deployments/user-interface/ui-chassis-spring-4.3.jar"

Web Page UI:

docker run --name egeria-ui --net=host -d \
-v /opt/egeria/egeria-ui/nginx-conf:/etc/nginx/conf.d \
odpi/egeria-ui:4.1.8

I can access the login page through localhost and log in successfully. However, after login, the operational parts of the page are unavailable, and the API server throws the following error:

AssetCatalogSupportedTypes(types=null)
2024-03-15 11:49:06.463 -ERROR 19568 --- [nio-8443-exec-1] o.o.o.c.ffdc.RESTExceptionHandler    : Detected Invalid Parameter Exception in REST Response

org.odpi.openmetadata.frameworks.connectors.ffdc.InvalidParameterException: OMAG-MULTI-TENANT-404-001 The OMAG Server cocoMDS1 is not available to service a request from user admin
    at org.odpi.openmetadata.commonservices.ffdc.RESTExceptionHandler.throwInvalidParameterException(RESTExceptionHandler.java:280) ~[classes/:na]
    at org.odpi.openmetadata.commonservices.ffdc.RESTExceptionHandler.detectAndThrowInvalidParameterException(RESTExceptionHandler.java:207) ~[classes/:na]
    at org.odpi.openmetadata.accessservices.assetcatalog.AssetCatalog.detectExceptions(AssetCatalog.java:320) ~[classes/:na]
    at org.odpi.openmetadata.accessservices.assetcatalog.AssetCatalog.getSupportedTypes(AssetCatalog.java:288) ~[classes/:na]
    at org.odpi.openmetadata.userinterface.uichassis.springboot.service.AssetCatalogOMASService.getSupportedTypes(AssetCatalogOMASService.java:239) ~[classes/:na]
    at org.odpi.openmetadata.userinterface.uichassis.springboot.api.asset.AssetController.getSupportedTypes(AssetController.java:105) ~[classes/:na]
    ... (stack trace continues)

Expected Behavior

Web page functions work normally

Steps To Reproduce

I think it might be a problem with my service configuration. Could you please help me check it out? (First time trying Egeria, thanks.)

OMAG Server —— application.properties

# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the ODPi Egeria project.

# ========================================================================================================
# The application.properties file is used to configure the OMAG Server Platform which is implemented as
# a spring boot application.

###############################################
### Default port for the OMAG Server Platform
################################################
server.port=9443

################################################
### SSL security.
# The keystore determines the information sent out by the server to identify itself.
# The truststore is where the certificates of trusted servers the platform is calling are located.
# (Note SSL certificate checking is performed on client-side only.)
################################################
# server.ssl.key-store=keystore.p12
# server.ssl.key-store-password=egeria
# server.ssl.keyStoreType=PKCS12
# server.ssl.keyAlias=egeriaserverchassis

# server.ssl.trust-store=truststore.p12
# server.ssl.trust-store-password=egeria

# WARNING! setting 'strict.ssl=false' allows java clients to open https connections without checking the validity of
# certificates from the servers it is calling.
# Alternate you can import self-signed certificates into java truststore or set up a truststore only for this app
# by adding the store into server.ssl.trust-store parameter
strict.ssl=false
# Comma separated values of http headers to be added to ThreadLocal
header.name.list=

################################################
### Which java packages should be scanned to locate the Spring resource definitions that define the REST APIs?
################################################
scan.packages=org.odpi.openmetadata.*

################################################
### startup servers configuration
################################################
#userId used to start up the list of configured servers default is 'system'
startup.user=system
# Comma separated names of servers to be started.  The server names should be unquoted.
startup.server.list=

################################################
### Logging
################################################
logging.level.root=OFF
logging.level.org.springframework=ERROR
#logging.level.org.odpi.openmetadata.commonservices=DEBUG
#logging.level.org.odpi.openmetadata.accessservices.subjectarea.handlers=DEBUG
logging.level.org.springframework.boot.web.embedded.tomcat=INFO
logging.level.org.odpi.openmetadata.serverchassis.springboot=INFO

################################################
### Swagger Docs
################################################
springdoc.version='@springdoc.version@'
springdoc.api-docs.enabled=true
springdoc.api-docs.path=/v3/api-docs
springdoc.swagger-ui.path=/swagger-ui.html
springdoc.swagger-ui.displayRequestDuration=true
springdoc.swagger-ui.tagsSorter=alpha
springdoc.swagger-ui.operationsSorter=alpha
springdoc.swagger-ui.docExpansion=none

################################################
### Spring Boot Actuator
################################################
# Endpoints web configuration
#management.endpoints.web.exposure.include=*
management.health.cassandra.enabled=false

OMAG Rest Api Server —— application.properties

# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the ODPi Egeria project.

#Tomcat server configuration
server.port=8443
server.compression.enabled=true
server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css
server.tomcat.uri-encoding=UTF-8

#server.ssl.key-store=classpath:keystore.p12
#server.ssl.key-store-password=egeria
#server.ssl.keyStoreType=PKCS12
#server.ssl.keyAlias=egeriauichassis
#
#server.ssl.trust-store=truststore.p12
#server.ssl.trust-store-password=egeria

# Packages to be scanned by spring
scan.packages=org.odpi.openmetadata

# WARNING! setting 'false' allows java clients to open https connections without checking certificates validity
# Alternate you can import self signed certificates into java truststore or setup an truststore only for this app
# by adding the store into server.ssl.trust-store parameter
strict.ssl=false

#token timeout in minutes
token.timeout=15
token.absolute.timeout=720
token.secret=doNotTell

#LDAP authentication

ldap.domain=
ldap.user.search.base=ou=people,dc=egeria,dc=com
ldap.user.search.filter=uid={0}
ldap.group.search.base=ou=Groups,dc=egeria,dc=com
ldap.group.search.filter=member={0}
ldap.url=ldap://localhost:389
ldap.group.role.attribute=
ldap.npa.dn=
ldap.npa.password=
#ldap.user.dn.patterns patterns is a list of values separated by ";" as comma is used in the ldap pattern
ldap.user.dn.patterns=

# Redis configuration
#redis.host=localhost
#redis.port=6379

# Authentication source (possible values: demo, ldap, ad)
authentication.source=demo
# Authentication mode (possible values: session,token,redis)
authentication.mode=token

# ##############################################################
# Component visibility for Role based access ###################
# ##############################################################
# How it works?
#
# The roles are defined in external authentication source (provider) configured with `authentication.source`.
# For demo purposes, we are providing simple file based authentication provider. See demo-users.yml
# The matrix controlling what components are allowed on the UI views for specific role is defined in the 'role.visibleComponents' prefixed properties as follows"
#
#   role.visibleComponents.{ROLE-1}={component-name-1}
#   role.visibleComponents.{ROLE-2}={component-name-1},{component-name-2}
#
#   This will configure the application to show the component named 'component-name-1' for all uses assigned to 'ROLE-1'
#   In the same way, users that have assigned 'ROLE-2' can see more 'component-name-1' and 'component-name-2'.
#   It is also possible to use wildcard '*' to enable full visibility of all components to users in the given role.
#
#   Complete list of components names that can be used:
#
#       about
#       asset-catalog
#       asset-details
#       asset-details-print
#       glossary
#       repository-explorer
#       type-explorer
#       asset-lineage
#       asset-lineage-print
#       end-to-end
#       ultimate-source
#       ultimate-destination
#       vertical-lineage
#
# Below is the default configuration for the two COCO_PHARMA roles we use for demo:

role.visibleComponents.COCO_PHARMA_USER=about,asset-catalog,asset-details,asset-details-print,asset-lineage,asset-lineage-print,end-to-end,ultimate-source,ultimate-destination,vertical-lineage,glossary,repository-explorer
role.visibleComponents.COCO_PHARMA_ADMIN=*

# omas server connection details
omas.server.name=cocoMDS1
omas.server.url=http://localhost:9443

# lineage-warehouse
open.lineage.server.url=http://localhost:9443
open.lineage.server.name=cocoOLS1

# ui configuration properties
omas.asset.catalog.page.size=50

# landing page
app.description=Have a question? || Get in touch via our Slack community https://slack.lfai.foundation/ @@What is Open Metadata? || Find out more on our website https://egeria-project.org/ @@Have more cool ideas? || Feel free to let us know your ideas so we can make it better.
app.title=Egeria Open Metadata | Find the right data with governance

################################################
### Logging
################################################
logging.pattern.console=${CONSOLE_LOG_PATTERN:%clr(%d{${LOG_DATEFORMAT_PATTERN:yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %replace(%m){"password=.*", "password=*****"}%n${LOG_EXCEPTION_CONVERSION_WORD:%wEx}}
logging.pattern.file=${logging.pattern.console}
logging.level.root=ERROR
logging.level.org.springframework=ERROR
logging.level.org.springframework.boot.web.embedded.tomcat=INFO
logging.level.org.odpi.openmetadata=INFO

################################################
### CORS
################################################
# Comma-separated list of origins.
# Example configuration below is for setting up local development environment where egeria-ui is hosted on one of the two urls.
# cors.allowed-origins=http://localhost,http://localhost:8081
cors.allowed-origins=*

################################################
### Swagger Docs
################################################
springdoc.version='@springdoc.version@'
springdoc.api-docs.enabled=true
springdoc.api-docs.path=/v3/api-docs
springdoc.swagger-ui.path=/swagger-ui.html
springdoc.swagger-ui.displayRequestDuration=true
springdoc.swagger-ui.tagsSorter=alpha
springdoc.swagger-ui.operationsSorter=alpha
springdoc.swagger-ui.docExpansion=none
springdoc.swagger-ui.enabled=true

################################################
### Additional demo users configuration
################################################
spring.config.import=classpath:demo-users.yml

################################################
### Spring Boot Actuator
################################################
# Endpoints web configuration
#management.endpoints.web.exposure.include=*
management.health.cassandra.enabled=false
management.health.redis.enabled=false
management.health.ldap.enabled=false

Environment

- Egeria:4.4
- OS:Docker
- Java:JDK17
- Browser (for UI issues):Chrome
- Additional connectors and integration:

Any Further Information?

No response

wcc1433 commented 8 months ago

egeria api/ keep reporting errors

wcc1433 commented 8 months ago

Modify the configuration of OMAG Server as:

startup.user=admin
startup.server.list=cocoMDS1

OMAG Server cannot be started and an error message is reported:

2024-03-15T05:32:43.765Z  INFO 1 --- [           main] o.o.o.s.springboot.OMAGServerPlatform    : Received startup fail event with message: {} Server startup failed with error: OMAG-ADMIN-400-019 OMAG server cocoMDS1 has been called with a configuration document that has no services configured
2024-03-15T05:32:43.766Z  INFO 1 --- [           main] o.o.o.s.springboot.OMAGServerPlatform    : Temporarily deactivating any auto-started servers '[cocoMDS1]'
Fri Mar 15 05:32:43 GMT 2024 OMAG Server Platform shutdown requested. Shutting down auto-started servers (if running): [cocoMDS1]
Server startup failed with error: OMAG-ADMIN-400-019 OMAG server cocoMDS1 has been called with a configuration document that has no services configured
github-actions[bot] commented 6 months ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed in 20 days if no further activity occurs. Thank you for your contributions.

mandy-chessell commented 6 months ago

@wcc1433 sorry that we missed this when you raised the issue.

The error message that you are seeing means that cocoMDS1 has not been configured.

OMAG Server Platform shutdown requested. Shutting down auto-started servers (if running): [cocoMDS1]
Server startup failed with error: OMAG-ADMIN-400-019 OMAG server cocoMDS1 has been called with a configuration document that has no services configured

These docker images are part of the helm charts used with our training labs. One of the labs includes how to configure the servers such as cocoMDS1 and cocoOLS1 which are called by the UI. Hence the configuration is not included in the docker image. There is a set of blogs that works with pre-configured servers here which may help ... https://getting-started-with-egeria.pdr-associates.com/introduction.html

mandy-chessell commented 5 months ago

I am going to close this as there is no feedback