✨ : Pulling module from private Git instance
nicjansma opened this issue · 0 comments
Is your feature request related to a problem? Please describe.
I'd like to be able to pull a module definition from a private Git instance (HTTPS URL).
For example, I self-host Gitea and would like to use those URLs to deploy from.
This is similar to #270.
Describe the solution you'd like
While I can point Gaia at a private Git HTTPS URL, using the module definition does not work, nor does it pull the README.md
.
When I click Refresh module definition, the logs show:
2023-04-17 09:18:22.238 ERROR 1 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException: Cannot invoke "io.gaia_app.registries.RegistryDetails.getProjectId()" because the return value of "io.gaia_app.modules.bo.TerraformModule.getRegistryDetails()" is null] with root cause
java.lang.NullPointerException: Cannot invoke "io.gaia_app.registries.RegistryDetails.getProjectId()" because the return value of "io.gaia_app.modules.bo.TerraformModule.getRegistryDetails()" is null
at io.gaia_app.modules.controller.ModuleRestController.refreshModule(ModuleRestController.java:129) ~[classes!/:2.4.0]
at io.gaia_app.modules.controller.ModuleRestController$$FastClassBySpringCGLIB$$bac1ac95.invoke(<generated>) ~[classes!/:2.4.0]
at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) ~[spring-core-5.3.22.jar!/:5.3.22]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) ~[spring-aop-5.3.22.jar!/:5.3.22]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.22.jar!/:5.3.22]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.22.jar!/:5.3.22]
at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:61) ~[spring-security-core-5.7.2.jar!/:5.7.2]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) ~[spring-aop-5.3.22.jar!/:5.3.22]
at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) ~[spring-aop-5.3.22.jar!/:5.3.22]
at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) ~[spring-aop-5.3.22.jar!/:5.3.22]
at io.gaia_app.modules.controller.ModuleRestController$$EnhancerBySpringCGLIB$$af539453.refreshModule(<generated>) ~[classes!/:2.4.0]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
This is ultimately because TerraformModule.getRegistryDetails()
returns null because the ModuleServiceImpl.java
only has support for the public Github and Gitlab instances:
gaia/src/main/java/io/gaia_app/modules/ModuleServiceImpl.java
Lines 55 to 64 in 57e49d3
Describe alternatives you've considered
I was able to trick Gaia to use my module definition by pushing my *.tf
and variables.tf
to a public Github/Gitlab instance, using the Refresh module definition, then pointing it back to my private Git repo.
Obviously, this is not ideal.