opendevstack / ods-provisioning-app

Provisioning app, which triggers project and component provisions (including Jira / Confluence / BitBucket and OCP resource creation)
Apache License 2.0
15 stars 20 forks source link

Invalid character error response when creating new project in OCP4 cluster #690

Closed albertpuente closed 3 years ago

albertpuente commented 3 years ago

Describe the bug Following an apparently successful installation of ODS4 in an OCP4 cluster, the provisioning app displays an error whenever a new project is created.

To Reproduce Steps to reproduce the behavior:

  1. Go to the provisioning app and click on the Provision tab.
  2. Select create a new project (with a sufficiently privileged technical account).

Expected behavior A new ODS project is created with all its components.

Screenshots image

Affected version (please complete the following information):

Log Output (ensure to remove any confidential information like tokens, project names, etc.

2021-06-15 13:40:26 DEBUG c.o.i.restclient.ApiTypeMapper - https://console-openshift-console.apps.us-test.ocp.aws.boehringer.com/api
2021-06-15 13:40:26 DEBUG jdk.event.security - X509Certificate: Alg:SHA256withRSA, Serial:1, Subject:CN=ingress-operator@1622094595, Issuer:CN=ingress-operator@1622094595, Key type:RSA, Length:2048, Cert Id:-1073635227, Valid from:5/27/21, 5:49 AM, Valid until:5/27/23, 5:49 AM
2021-06-15 13:40:26 DEBUG jdk.event.security -  TLSHandshake: console-openshift-console.apps.us-test.ocp.aws.boehringer.com:443, TLSv1.3, TLS_AES_256_GCM_SHA384, 1649231317
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 scheduled after   0 µs: OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 starting              : OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 run again after 300 s : OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 finished run in 301 µs: OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 scheduled after   0 µs: OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 starting              : OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 run again after 300 s : OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 finished run in 351 µs: OkHttp ConnectionPool
2021-06-15 13:40:26 ERROR c.o.i.r.AuthorizationEndpoints - Could not determine authorization-endpoint endpoint: invalid JSON.
2021-06-15 13:40:26 DEBUG c.o.i.r.o.ResponseCodeInterceptor - Response{protocol=http/1.1, code=404, message=Not Found, url=https://console-openshift-console.apps.us-test.ocp.aws.boehringer.com/api/}
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 scheduled after   0 µs: OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 starting              : OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 run again after 300 s : OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 finished run in 137 µs: OkHttp ConnectionPool
2021-06-15 13:40:26 INFO  c.o.i.restclient.ApiTypeMapper - Can't access legacy endpoint api
com.openshift.restclient.NotFoundException: Not Found
        at com.openshift.internal.restclient.okhttp.ResponseCodeInterceptor.createOpenShiftException(ResponseCodeInterceptor.java:125)
        at com.openshift.internal.restclient.okhttp.ResponseCodeInterceptor.intercept(ResponseCodeInterceptor.java:69)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
        at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
        at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)
        at com.openshift.internal.restclient.ApiTypeMapper.request(ApiTypeMapper.java:273)
        at com.openshift.internal.restclient.ApiTypeMapper.readEndpoint(ApiTypeMapper.java:261)
        at com.openshift.internal.restclient.ApiTypeMapper.getLegacyGroups(ApiTypeMapper.java:247)
        at com.openshift.internal.restclient.ApiTypeMapper.init(ApiTypeMapper.java:158)
        at com.openshift.internal.restclient.ApiTypeMapper.isSupported(ApiTypeMapper.java:87)
        at com.openshift.internal.restclient.URLBuilder.buildWithNamespaceInPath(URLBuilder.java:148)
        at com.openshift.internal.restclient.URLBuilder.build(URLBuilder.java:135)
        at com.openshift.internal.restclient.DefaultClient.execute(DefaultClient.java:302)
        at com.openshift.internal.restclient.DefaultClient.execute(DefaultClient.java:275)
        at com.openshift.internal.restclient.DefaultClient.execute(DefaultClient.java:264)
        at com.openshift.internal.restclient.DefaultClient.list(DefaultClient.java:171)
        at com.openshift.internal.restclient.DefaultClient.list(DefaultClient.java:160)
        at com.openshift.internal.restclient.DefaultClient.list(DefaultClient.java:151)
        at com.openshift.internal.restclient.DefaultClient.list(DefaultClient.java:141)
        at org.opendevstack.provision.services.openshift.OpenshiftClient.projects(OpenshiftClient.java:40)
        at org.opendevstack.provision.services.openshift.OpenshiftService.createProjectKeyExistsCheck(OpenshiftService.java:81)
        at org.opendevstack.provision.services.openshift.OpenshiftService.checkCreateProjectPreconditions(OpenshiftService.java:53)
        at org.opendevstack.provision.controller.ProjectApiController.checkPreconditions(ProjectApiController.java:346)
        at org.opendevstack.provision.controller.ProjectApiController.addProject(ProjectApiController.java:205)
        at org.opendevstack.provision.controller.ProjectApiController$$FastClassBySpringCGLIB$$10b64f.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
        at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
        at org.opendevstack.provision.controller.ProjectApiController$$EnhancerBySpringCGLIB$$6c5e62d6.addProject(<generated>)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1061)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:961)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:149)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:764)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Unknown Source)
2021-06-15 13:40:26 DEBUG c.o.i.restclient.ApiTypeMapper - https://console-openshift-console.apps.us-test.ocp.aws.boehringer.com/oapi
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 scheduled after   0 µs: OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 starting              : OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 run again after 300 s : OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 finished run in  89 µs: OkHttp ConnectionPool
2021-06-15 13:40:26 INFO  c.o.i.restclient.ApiTypeMapper - Can't access legacy endpoint oapi
java.lang.IllegalArgumentException: Invalid character: <
        at org.jboss.dmr.JSONParserImpl.invalid(JSONParserImpl.java:136)
        at org.jboss.dmr.JSONParser.yyLex(JSONParser.java:596)
        at org.jboss.dmr.JSONParser.yyParse(JSONParser.java:662)
        at org.jboss.dmr.ModelNode.fromJSONString(ModelNode.java:1472)
        at com.openshift.internal.restclient.ApiTypeMapper.getLegacyGroups(ApiTypeMapper.java:248)
        at com.openshift.internal.restclient.ApiTypeMapper.init(ApiTypeMapper.java:158)
        at com.openshift.internal.restclient.ApiTypeMapper.isSupported(ApiTypeMapper.java:87)
        at com.openshift.internal.restclient.URLBuilder.buildWithNamespaceInPath(URLBuilder.java:148)
        at com.openshift.internal.restclient.URLBuilder.build(URLBuilder.java:135)
        at com.openshift.internal.restclient.DefaultClient.execute(DefaultClient.java:302)
        at com.openshift.internal.restclient.DefaultClient.execute(DefaultClient.java:275)
        at com.openshift.internal.restclient.DefaultClient.execute(DefaultClient.java:264)
        at com.openshift.internal.restclient.DefaultClient.list(DefaultClient.java:171)
        at com.openshift.internal.restclient.DefaultClient.list(DefaultClient.java:160)
        at com.openshift.internal.restclient.DefaultClient.list(DefaultClient.java:151)
        at com.openshift.internal.restclient.DefaultClient.list(DefaultClient.java:141)
        at org.opendevstack.provision.services.openshift.OpenshiftClient.projects(OpenshiftClient.java:40)
        at org.opendevstack.provision.services.openshift.OpenshiftService.createProjectKeyExistsCheck(OpenshiftService.java:81)
        at org.opendevstack.provision.services.openshift.OpenshiftService.checkCreateProjectPreconditions(OpenshiftService.java:53)
        at org.opendevstack.provision.controller.ProjectApiController.checkPreconditions(ProjectApiController.java:346)
        at org.opendevstack.provision.controller.ProjectApiController.addProject(ProjectApiController.java:205)
        at org.opendevstack.provision.controller.ProjectApiController$$FastClassBySpringCGLIB$$10b64f.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
        at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691)
        at org.opendevstack.provision.controller.ProjectApiController$$EnhancerBySpringCGLIB$$6c5e62d6.addProject(<generated>)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.base/java.lang.reflect.Method.invoke(Unknown Source)
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1061)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:961)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.servlet.resource.ResourceUrlEncodingFilter.doFilter(ResourceUrlEncodingFilter.java:67)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:327)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:115)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:81)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:126)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:81)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:105)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:149)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:149)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:218)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:212)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:103)
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:89)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)
        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:110)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:55)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:336)
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:211)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:183)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:358)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:271)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:93)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
        at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:764)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.base/java.lang.Thread.run(Unknown Source)
2021-06-15 13:40:26 DEBUG c.o.i.restclient.ApiTypeMapper - https://console-openshift-console.apps.us-test.ocp.aws.boehringer.com/apis
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 scheduled after   0 µs: OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 starting              : OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 run again after 300 s : OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.internal.concurrent.TaskRunner - Q10001 finished run in  93 µs: OkHttp ConnectionPool
2021-06-15 13:40:26 DEBUG o.s.w.s.m.m.a.HttpEntityMethodProcessor - Using 'application/json', given [application/json, text/javascript, */*;q=0.01] and supported [text/plain, */*, text/plain, */*, application/json, application/*+json, application/json, application/*+json, application/xml;charset=UTF-8, text/xml;charset=UTF-8, application/*+xml;charset=UTF-8, application/xml;charset=UTF-8, text/xml;charset=UTF-8, application/*+xml;charset=UTF-8]
2021-06-15 13:40:26 TRACE o.s.w.s.m.m.a.HttpEntityMethodProcessor - Writing ["{"endpoint":"ADD_PROJECT","stage":"CHECK_PRECONDITIONS","status":"FAILED","errors":[{"error-code":"EXCEPTION","error-message":"class org.opendevstack.provision.adapter.exception.AdapterException was thrown in adapter 'openshiftService' while executing check preconditions for project 'ODSTT14'. [message=java.lang.IllegalArgumentException: Invalid character: <]"}]}"]
2021-06-15 13:40:26 DEBUG o.s.s.w.c.HttpSessionSecurityContextRepository - Stored SecurityContextImpl [Authentication=CrowdSSOAuthenticationToken [Principal=com.atlassian.crowd.integration.springsecurity.user.CrowdUserDetails@63e6bca0, Credentials=[PROTECTED], Authenticated=true, Details=com.atlassian.crowd.integration.springsecurity.CrowdSSOAuthenticationDetails@dd7825c1, Granted Authorities=[bi-it-devstack-interface-users]]] to HttpSession [org.apache.catalina.session.StandardSessionFacade@2c75ee27]
2021-06-15 13:40:26 TRACE o.s.web.servlet.DispatcherServlet - No view rendering, null ModelAndView returned.
2021-06-15 13:40:26 DEBUG o.s.web.servlet.DispatcherServlet - Completed 503 SERVICE_UNAVAILABLE, headers={masked}

@felipecruz91 @stitakis

michaelsauter commented 3 years ago

This is probably related to https://github.com/opendevstack/ods-provisioning-app/pull/630.

felipecruz91 commented 3 years ago

Tried disabling the preflight checks as follows:

services.openshift.enabled=false

but the error is the same:

image

cc @stitakis

felipecruz91 commented 3 years ago

I understand by the following errors that the OpenShift REST client being used won't support the API provided by OCP4.

2021-06-15 14:19:03 INFO  c.o.i.restclient.ApiTypeMapper - Can't access legacy endpoint oapi
java.lang.IllegalArgumentException: Invalid character: <
        at org.jboss.dmr.JSONParserImpl.invalid(JSONParserImpl.java:136)
2021-06-15 14:19:03 INFO  c.o.i.restclient.ApiTypeMapper - Can't access legacy endpoint api
com.openshift.restclient.NotFoundException: Not Found
        at com.openshift.internal.restclient.okhttp.ResponseCodeInterceptor.createOpenShiftException(ResponseCodeInterceptor.java:125)
        at com.openshift.internal.restclient.okhttp.ResponseCodeInterceptor.intercept(ResponseCodeInterceptor.java:69)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
        at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
        at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)
        at com.openshift.internal.restclient.ApiTypeMapper.request(ApiTypeMapper.java:273)
        at com.openshift.internal.restclient.ApiTypeMapper.readEndpoint(ApiTypeMapper.java:261)

What OCP 4 version have you used to test it? We're targeting OCP 4.7.13 at the moment.

metmajer commented 3 years ago

Those invalid character < errors are familiar to me... can it be that the request returns a HTML page?

felipecruz91 commented 3 years ago

FYI https://github.com/openshift/openshift-restclient-java/issues/468

clemensutschig commented 3 years ago

maybe a wrong url? can you go and curl the url you are using - and see what is returned, the thing expects json it seems - and it's some x/hmtl

clemensutschig commented 3 years ago

Looks like oauth is kicking in - and that is why you get an html page - just enter it in a browser? - is there something wrongly configured, or tokens NOT sent around?

clemensutschig commented 3 years ago

@stitakis can you work with the team to get this resolved?

stitakis commented 3 years ago

@clemensutschig @metmajer I got access to the ocp4 cluster. I'll take a look together with Albert and Felipe

@albertpuente @felipecruz91 regarding this exception:

2021-06-15 13:40:26 INFO  c.o.i.restclient.ApiTypeMapper - Can't access legacy endpoint api
com.openshift.restclient.NotFoundException: Not Found

Did you have the chance to verify if...

  1. the configured url is correct ?
  2. the configured url is available in the cluster ?
  3. if is available, is it protected by oauth? Can the cluster be configured to not appliy oauth to the url?
  4. if it is not available, is there any cluster configuration that could be used to enable it ?
stitakis commented 3 years ago

@clemensutschig @metmajer an update on this...

we found out so far that:

A. the first attempt to disable the service with the config flag services.openshift.enabled=false failed because the same property was defined as services.openshift.enabled=true below in the configuration application.properties. We tested this flag services.openshift.enabled=false and worked expected.

B. the property openshift.api.uri contains the wrong url. We will find the right url for oc4 and test again.

stitakis commented 3 years ago

@clemensutschig @metmajer @michaelsauter

it was a configuration issue. No bug at all.

We found the right value for the property openshift.api.uri and successfully tested the prov-app.

I'll close this item.

Thanks @felipecruz91 and @albertpuente for the support!